MYSQL高级第一天(4)

触发器:

一、概述

1、介绍:

  触发器是与表相关的数据库对象,指在insert/update/delete之前或之后,触发并执行触发器中定义的sql语句集合,触发器的这种特性可以协助应用在数据库端确保数据的完整性、日志记录、数据校验等操作。

  使用别名OLD和NEW来引用触发器中发生变化的记录内容,这和其它数据库是相似的,现在触发器还只支持行级触发,不支持语句级触发。

 
触发器类型 NEW和OLD的使用
INSERT触发器 NEW表示将要或者已经新增的记录数据
UPDATE触发器 OLD表示更新之前的记录数据,NEW表示将要或者已经更新的记录数据
DELETE触发器 OLD表示将要或者已经删除的记录数据

 

 

 

 

 

 

二、语法:

1、创建:

--UPDATE触发器
delimiter $;
create trigger emp_update_trigger
after update
on emp
for each row
begin
insert into emp_logs(id,operation,operate_time,operate_id,operate_params) values(null,'update',Now(),new.id,concat('修改前:(id',old.id,',name:',old.name,',age',old.age,',salary:',old.salary,'),修改 后:(id:',new.id,',name:',new.name,',age:',new.age,',salary:',new.salary,')'));
end$

 

--INSERT触发器
delimieter $;
create trigger emp_insert_trigger
after insert
on emp
for each row
begin
insert into emp_logs(id,operation,operate_time,operate_id,operate_params) values(null,'insert',Now(),new.id,concat('插入后(id:',new.id,',name:',new.name,',age:',new.age,',salary:',new.salary,')'));
end$

  

--DELETE触发器
delimiter $;
create trigger emp_delete_trigger
after delete
on emp
for each row
begin
insert into emp_logs(id,operation,operate_time,operate_id,operate_params) values(null,'delete',Now(),old.id,concat('删除前:(id:',old.id,',name:',old.name,',age',old.age,',salary:',old.salary,')'));
end$

  

2、删除

drop trigger emp_delete_trigger

  

3、查看:

show triggers\G$

  

 

相关文章

优化MySQL数据库发布系统存储的方法有:1.mysql库主从读写分...
使用mysql的方法:在“我的电脑”→右键→“管理”→“服务”...
在mysql中查看root用户权限的方法:1.命令行启动mysql服务;...
MySQL主从复制是用来备份一个与主数据库一样环境的从数据库,...
运行mysql的方法1.启动mysql服务,在“我的电脑”→右键→“...
开启mysql的方法1.可以通过快捷键win+r,输入cmd,打开窗口,...