织梦cms网站模板,中国logo设计制作网,兰州市建设厅网站,wordpress备案号显示2019独角兽企业重金招聘Python工程师标准 注意#xff1a;语句中出现的old#xff0c;new#xff0c;now#xff08;#xff09;#xff0c;都为数据库自带的关键字#xff0c;此处不做解释。 两种情况#xff1a; 第一种#xff1a;一张表中#xff0… 2019独角兽企业重金招聘Python工程师标准 注意语句中出现的oldnewnow都为数据库自带的关键字此处不做解释。 两种情况 第一种一张表中更新某条记录的其中的一个字段触发指定的触发器记录时间即更新到这条记录中的另一个字段中。 第二种两张表当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)
) ENGINEInnoDB DEFAULT CHARSETutf8; 触发器 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.datenow() ;
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 pwdtest1 where id1; 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)
) ENGINEInnoDB DEFAULT CHARSETutf8; 创建触发器 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 datenow()
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 userjdksafdgfg where tid1;触发触发器实现test表的date字段的更新。 转载于:https://my.oschina.net/viakiba/blog/778794