触发器:
触发器是与表有关的数据库对象,指在insert\update\delete之前或之后,触发并执行触发器中定义的SQL语句集合。
触发器的这种特性可以协助应用在数据库段确保数据的完整性,日志记录,数据校验等操作。
使用别名OLD和NEW来引用触发器中发生变化的记录内容,这与其他的数据库是相似的。
现在触发器还只支持行级触发,不支持语句级触发。


示例一:insert
注:new 表示新数据
-- 插入数据触发器
drop trigger if EXISTS tb_users_insert_trigger;
create trigger tb_users_insert_trigger
after insert on tb_users for each row
begin
insert into tb_logs(id,operation,operation_time,operation_id,operation_params) VALUES
(null,"insert",NOW(),new.id,CONCAT('插入的数据为:id=',new.id,',name=',new.name,',age=',new.age,',status=',new.status,",gender=",new.gender,",phone=",new.phone));
end;
-- 查看触发器
show TRIGGERS;
-- 触发或者说应用触发器
INSERT into tb_users(id,NAME,age,status,gender,phone)VALUES(null,'张三sss',18,'1','1','116');
示例二:update
注:new 表示新数据,old表示原始老数据;当更改的数据行为多行数据时,触发器将会被触发多次(即,修改一行数据,触发一次)。
-- update 触发器
drop trigger if EXISTS tb_users_update_trigger;
create trigger tb_users_update_trigger
-- 更新表之后触发
after update on tb_users for each row
-- 更新表之前触发
-- before update on tb_users for each row
begin
insert into tb_logs(id,operation,operation_time,operation_id,operation_params) VALUES
(null,"update",NOW(),new.id,
CONCAT('更新之前数据为:id=',old.id,',name=',old.name,',age=',old.age,',status=',old.status,",gender=",old.gender,",phone=",old.phone,
'|更新之后数据为:id=',new.id,',name=',new.name,',age=',new.age,',status=',new.status,",gender=",new.gender,",phone=",new.phone));
end;
-- 查看触发器
show TRIGGERS;
update tb_users set name ='张三new' where name ='张三';
示例三:delete
-- delete 触发器
drop trigger if EXISTS tb_users_delete_trigger;
create trigger tb_users_delete_trigger
-- 删除表之后触发
after delete on tb_users for each row
begin
insert into tb_logs(id,operation,operation_time,operation_id,operation_params) VALUES
(null,"delete",NOW(),old.id,CONCAT('更新之前数据为:id=',old.id,',name=',old.name,',age=',old.age,',status=',old.status,",gender=",old.gender,",phone=",old.phone));
end;
-- 查看触发器
show TRIGGERS;
delete from tb_users where name ='张三sss';
delete from tb_users where name ='张三封';


博客内容主要用于日常学习记录,内容比较随意,如有问题,还需谅解!!!

浙公网安备 33010602011771号