简介:
触发器是与表有关的数据库对象,在 insert/update/delete 之前或者之后,触发并执行触发器中定义的SQL语句集合。
触发器适合在数据库端确保数据的完整性,日志记录,数据校验 现在的触发器还只支持行级触发,不支持语句触发。
创建查看删除:
-- 创建 --
CREATE TRIGGER [trigger_name]
BEFORE/AFTER INSERT/UPDATE/DELETE
ON [table_name] FOR EACH ROW -- 指定表并加入触发器
BEGIN
...
END;
-- 查看 --
SHOW TRIGGERS;
-- 删除 不指定数据库.名称,默认删除当前数据库下的 --
DROP TRIGGER [database_name.]trigger_name
示例:日志表
为hso表建立日志表hso_logs,并通过触发器记录该表的数据变更日志。
-- 建表语句 --
CREATE TABLE hso_logs(
id int(11) not null auto_increment,
operation varchar(20) not null comment '操作类型',
operate_time datetime not null comment '操作时间',
operate_id int(11) not null comment '操作的id',
operate_params varchar(500) comment '操作参数',
primary key(id)
)engine=innodb default charset=utf8;
-- insert触发器 --
create trigger hso_insert_trigger
after insert on hso for each row
begin
insert into hso_logs(id,
operation,
operate_time,
operate_id,
operate_params)
values(null,'insert',now(),new.id,concat(
'插入的数据内容为id=',new.id,',var1=',new.var1
))
end;
-- update触发器 --
create trigger hso_insert_trigger
after update on hso for each row
begin
insert into hso_logs(id,
operation,
operate_time,
operate_id,
operate_params)
values(null,'update',now(),new.id,concat(
'更新之前的数据:id=',old.id,',var1=',old.var1,
' | 更新的数据内容为id=',new.id,',var1=',new.var1
))
end;
-- delete触发器 --
create trigger hso_insert_trigger
after delete on hso for each row
begin
insert into hso_logs(id,
operation,
operate_time,
operate_id,
operate_params)
values(null,'delete',now(),old.id,concat(
'删除的数据内容为id=',new.id,',var1=',new.var1
))
-- 删除前的ID --
end;