触发器:MySQL响应insert、delete、update语句时自动执行的一条MySQL语句,创建触发器时需要给出的4条信息:唯一的触发器名、触发器相关的表、触发器应该响应的活动(insert 、delete、update)、触发器何时执行(处理前或处理后)。
1 insert触发器:当对表插入数据时起作用,只能用after
//建立insert触发器
SHOW CREATE TRIGGER tr2;
DROP TRIGGER tr2;
CREATE TRIGGER tr2 AFTER INSERT ON EMP FOR EACH ROW
BEGIN
INSERT INTO emp_log VALUES (NOW(),'insert');
END
//执行insert触发器
INSERT INTO EMP VALUES('0012','张三','销售','00002','2015-09-09',9000,700,'03');
//用过程触发触发器
DELIMITER //
CREATE PROCEDURE up2()
BEGIN
INSERT INTO EMP VALUES('0032','张di','销售','00002','2015-09-09',9000,700,'03');
END;//
2 delete触发器:当对表删除数据时起作用,只能用after
//建立 delete触发器
CREATE TRIGGER delete1
AFTER DELETE ON EMP FOR EACH ROW
BEGIN
INSERT INTO EMP_LOG VALUE (NOW(),'DELETE');
END;
//执行delete触发器
DELETE FROM EMP WHERE EMPNO ='00006';
3 update触发器:当对表修改数据时起作用,同时含有new和old两个虚拟表。结合New可访问更新行的记录;结合old可访问更新前行的记录,可用after,也可用before
// 建立一个update触发器, 如果更新后的comm大于2000,则2000作为comm
CREATE TRIGGER update1
AFTER UPDATE ON EMP FOR EACH ROW
BEGIN
INSERT INTO EMP_LOG VALUE (NOW(),'UPDATE');
END;
4 删除触发器:drop trigger trg_name;
5 查看触发器:show triggers;