mysql触发器 当记录的指定字段发生变化时,更新表中的另外一个字段,或者更新另外一张关联表中关联记录的字段...

2019独角兽企业重金招聘Python工程师标准>>> hot3.png

注意:语句中出现的old,new,now(),都为数据库自带的关键字,此处不做解释。

两种情况:

        第一种:一张表中,更新某条记录的其中的一个字段,触发指定的触发器,记录时间即更新到这条记录中的另一个字段中。

        第二种:两张表,当A表更新其中某条记录的某个字段时,触发指定的触发器,更新B表与A表关联的记录的某个字段。

对于第一种情况:

    模拟如下:

表结构:test表

CREATE TABLE `test` (
`id` int(11) NOT NULL,
`name` varchar(255) NOT NULL,
`pwd` varchar(255) DEFAULT NULL,
`date` datetime DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

触发器:

CREATE TRIGGER `test_haa` BEFORE UPDATE ON `test` FOR EACH ROW BEGIN
if (OLD.pwd != new.pwd) or (OLD.pwd IS NULL && new.pwd IS NOT NULL)
THEN
set new.date=now() ;
END if;
END;

解释如下:

     对于test表,创建test_haa触发器,当pwd字段发生改变时,更新date字段记录pwd的更新时间。

            如果不加     (OLD.pwd IS NULL && new.pwd IS NOT NULL) 这一个条件,则在pwd为空到pwd不为空这一个更新,date是不记录的。

            如果不加     ((OLD.pwd != new.pwd)) 这一个条件,则在pwd不为空时更新,date是不记录的。

测试:

先插入一条数据:

insert INTO test(id,name) VALUES(1,'test');

当更新pwd字段时:

update test set pwd="test1" where id=1;

date自动更新。

这种触发器,对于mysql来说(5.5.40),一个表只能创建一个。

第二种情况:

表结构:

结合test表:

新建test1表:

CREATE TABLE `test1` (
`tid` int(11) NOT NULL,
`user` varchar(255) DEFAULT NULL,
`idtest` varchar(255) DEFAULT NULL,
PRIMARY KEY (`tid`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

 

创建触发器:

CREATE TRIGGER `rel_order` AFTER UPDATE ON `test1` FOR EACH ROW begin
IF((old.user != new.user) or (old.user IS NULL && new.user IS NOT NULL))
THEN
update test
set date=now()
where id = old.idtest;
END IF;
END;

解释如下:

当test1表中的user字段更新时,跟新test表中的date字段。条件是,test1表user更改的那条记录的idtest字段与test的id字段相同,更新id为idtest的那条date记录。

测试如下

先在test1表中,插入一条数据:

INSERT into test1 values(1,"sa","1")

当更新:

UPDATE test1 set user="jdksafdgfg" where tid=1;

触发触发器,实现test表的date字段的更新。

转载于:https://my.oschina.net/viakiba/blog/778794

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/260229.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

通用无线设备对码软件_珞光全新发布国产通用软件无线电平台 :USRP-LW N310!珞光品牌已实现国产替代...

USRP-LW N310是一种网络的软件定义无线电(SDR),它提供了部署大规模的可靠的和容错性的分布式无线系统。USRP-LW N310通过引入远程执行任务的能力简化了对SDR系统的控制和管理,如更新软件,重新启动,工厂复位…

手把手玩转win8开发系列课程(2)

对win8开发,上一节我们对win8进行了简单的介绍,这一节我们来瞧一瞧他的开发环境搭建。 前奏。 这里所讲的win8开发,主要是指Windows8 app store 上开发,及metro ui或叫morden ui 程序的开发。传统桌面应用程序,网站应…

cordova-plugin-app-version插件使用

此插件用来获取开发软件的版本号!首先安装此插件: 命令行中输入 cordova plugin add cordova-plugin-app-version然后刷新项目,就会在在项目plugins文件夹下看到cordova-plugin-app-version,如下图所示接下来就是使用此插件的语句获取版本号c…

不同串口通信速率超时时间_串口知识详解 串口功能及电路介绍

一、串口的概念串行接口简称串口,也称串行通信接口或串行通讯接口(通常指COM接口),是采用串行通信方式的扩展接口。串行接口(SerialInterface)是指数据一位一位地顺序传送,其特点是通信线路简单,只要一对传输线就可以实现双向通信…

代码生成那点事

在微软技术中浸淫6年多了,我就常想啊,有没有一个工具,能让开发简单一点,哪怕就简单一点点?! 这还是去年的事情,手里的项目都成功上线了,我和james聊天,我说咱们的这几个项…

HDU 1003 Max Sum

同上题一样&#xff0c;求连续子序列的最大和 而且比上题还要简单一些&#xff0c;用不到long long了 直接水过 1 //#define LOCAL2 #include <iostream>3 #include <cstdio>4 #include <cstring>5 using namespace std;6 7 const int maxn 100000 10;8 in…

百度关键词抓取工具_VBA利用XMLHTTP抓取百度查询关键词结果的个数

大家好,我们今日讲解"利用XMLHTTP抓取百度查询关键词结果的个数"&#xff0c;这节内容是"VBA信息获取与处理"教程中第六个专题"VBA中利用XMLHTTP完成网抓数据"的第二节。第二节 利用XMLHTTP抓取百度查询关键词结果的个数在上一讲中我们讲解了一些…

多系统通讯-DotNetMQ

很久都没有写博客了&#xff0c;从15年4月份一直忙到现在&#xff0c;我才有时间去做梳理和总结&#xff0c;因为我提离职了&#xff0c;感觉整个世界突然变得不一样&#xff0c;随着而来的就是心情的放松&#xff0c;写一篇文章也是对过去一年多工作的梳理&#xff0c;加深印象…

九大现代病!中枪了吗?

现代人在享受现代化的生活和工作方式带来的便捷之时&#xff0c;也为此付出了不小的代价&#xff0c;下面列出的九大现代病就是典型的例子&#xff0c;看看你有没有中枪。 办公臀 常坐办公室&#xff0c;如果你发现屁股越坐越大&#xff0c;大腿越坐越粗&#xff0c;你可能有了…

驱动提取软件_深入分析施耐德工控软件代码执行漏洞

更多全球网络安全资讯尽在邑安全简介在本文中&#xff0c;我们将为读者详细介绍Claroty Research团队的Amir Preminger和Sharon Brizinov是如何组合利用两个漏洞&#xff0c;来触发施耐德工控软件EcoStruxure Operator Terminal Expert的代码执行漏洞&#xff0c;从而在首届举办…

atitit.表单验证 的dsl 本质跟 easyui ligerui比较

atitit.表单验证的dsl 本质跟 easyui ligerui比较 1. DSL 声明验证 1 2. 自定义规则 1 3. 正则表达式验证,可以扩展实现 2 4. 犯错误消息提示,generic canBeEmpty is good 3 5. Prevent the form to submit when invalid 3 6. 为空则不验证&#xff0c;不为空则验证&#xff0…

企业级应用框架(五)IOC容器在框架中的应用

前言 在上一篇我大致的介绍了这个系列所涉及到的知识点&#xff0c;在本篇我打算把IOC这一块单独提取出来讲&#xff0c;因为IOC容器在解除框架层与层之间的耦合有着不可磨灭的作用。当然在本系列前面的三篇中我也提供了一种基于反射的解耦方式&#xff0c;但是始终不是很优雅&…

后端开发需要学什么_都2020年了,还在纠结学什么语言?| 后端篇

几个礼拜前&#xff0c;一个学弟问我&#xff1a;“Ray&#xff0c;我打算之后要找工作了&#xff0c;不过现在自己没有特别深入的语言&#xff0c;最近想找一门好好学一下&#xff0c;你觉得学什么语言好呀&#xff1f;”我表示&#xff1a;“这个要看你求职方向、个人喜好、市…

10个非常有用的CSS hack和技术

转自&#xff1a;http://www.qianduan.net/10-useful-css-hacks-and-technique.html 1 – 跨浏览器的inline-block <style>li {width: 200px;min-height: 250px;border: 1px solid #000;display: -moz-inline-stack;display: inline-block;margin: 5px;zoom: 1;*display:…

Java的递归算法

递归算法设计的基本思想是&#xff1a;对于一个复杂的问题&#xff0c;把原问题分解为若干个相对简单类同的子问题&#xff0c;继续下去直到子问题简单到可以直接求解&#xff0c;也就是说到了递推的出口&#xff0c;这样原问题就有递推得解。 关键要抓住的是&#xff1a; &…

发现Java程序中的Bug

昨天在CSDN上阅读 "Java中十个常见的违规编码"这篇文章时&#xff0c;无意中找到了3个 "发现Java程序中的Bug"工具。 文章地址&#xff1a;http://www.csdn.net/article/2012-09-11/2809829-common-code-violations-in-java其中&#xff0c; FindBugs™ - …

shiro前后端分离_为什么要前后端分离?前后端分离的优点是什么?

随着互联网的高速发展以及IT开发技术的升级&#xff0c;前后端分离已成为互联网项目开发的业界标准使用方式。在实际工作中&#xff0c;前后端的接口联调对接工作量占HTML5大前端人员日常工作的30%-50%&#xff0c;甚至会更高。接下来千锋小编分享的广州HTML5大前端学习就给大家…

hdu--1075--字典树||map

做这题的时候 我完全没想到 字典树 就直接用map来做了 - 我是有 多不 敏感啊~~ 然后去 discuss 一看 很多都是说 字典树的问题.... 字典树 给我感觉 它的各个操作的意思都很清晰明了 直接手写 不那么容易啊。。 晚些 时候 试下来写------用map写是真心方便 只要注意下那么\n的吸…

php的类装载的步骤,设计PHP自动类装载功能

在使用面向对象方法做PHP开发时&#xff0c;可能会经常使用到各个路径中的类文件&#xff0c;这就需要大量的 include 或 require&#xff0c;而 PHP 提供了一个比较快捷的方式&#xff0c;就是利用函数 __autoload 可以编程实现动态的类装载功能&#xff0c;这样就不需要手动的…

网站首页幻灯片

Js页面: View Code /** * 大眼睛广告轮播 */ var indexEye {autoTime: 0,init: function () {var eyeObj $("#dyj_pics a:eq(0) img:eq(0)");eyeObj.attr("src", eyeObj.attr("data-imgSrc"));eyeObj.load(function () {indexEye.autoTime se…