Mysql触发器

Mysql触发器

1.创建触发器

注意:触发器只能创建在永久表上,不能对临时表创建触发器,语法如下:

CREATE TRIGGER trigger_name trigger_time trigger_event 
ON table_name FOR EACH ROW trigger_stmt
trigger_time:触发器触发的时间,可以使before或者after,before是指的在检查约束前触发,而after是检查约              束后触发.
trigger_event:触发器触发的事件,可以是insert,update或者delete.
使用别名old和new来引用触发器中发生变化的记录内容,现在触发器还只支持行级触发,不支持语句级触发.
2.创建一个student表,复制一份命名为student_back:
CREATE TABLE `student` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `name` varchar(255) DEFAULT NULL,
  `age` int(11) DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=utf8;

3.创建触发器:
delimiter $$
CREATE TRIGGER ins_stu AFTER INSERT ON student FOR EACH ROW
BEGIN
	INSERT INTO student_back (id, NAME, age)
VALUES
	(new.id, new. NAME, new.age) ;
END ;
$$
delimiter ;

插入一条数据:

INSERT INTO student(name,age) VALUES("zhansgan",15);

image.png

//注意:对于有重复记录需要进行update的insert,触发器触发的顺序是before insert , before update ,after update;对于没有重复记录的insert,就是简单地执行insert操作,触发器触发的顺序是before insert,after insert . 对于那些实际执行update操作的记录,仍然会执行before insert触发器的内容,在设计触发器的时候一定要考虑这种情况,避免错误地触发了触发器.
4.删除触发器
drop trigger trigger_name
5.查看触发器
show triggers 

posted @ 2019-01-25 20:46  城南少年与猫  阅读(243)  评论(0编辑  收藏  举报