asp 网站管理系统,公众号制作编辑器,网页设计公司哪家效果好,营销型网站设计思路文章目录 一、介绍二、触发器语法1.案例 总结 一、介绍
触发器是与表有关的数据库对象#xff0c;指在insert/update/delete之前或之后#xff0c;触发并执行触发器中定义的SQL语句集合。触发器的这种特性可以协助应用在数据库端确保数据的完整性#xff0c;日志记录,数据校… 文章目录 一、介绍二、触发器语法1.案例 总结 一、介绍
触发器是与表有关的数据库对象指在insert/update/delete之前或之后触发并执行触发器中定义的SQL语句集合。触发器的这种特性可以协助应用在数据库端确保数据的完整性日志记录,数据校验等操作。 使用别名OLD和NEW 来引用触发器中发生变化的记录内容这与其他的数据库是相似的。现在触发器还只支持行级触发不支持语句级触发。
二、触发器语法 创建 CREATE TRIGGER trigger_name
BEFORE/AFTER INSERT/UPDATE/DELETE
ON tbl_name FOR EACH ROW--行级触发器
BEGINtrigger_stmt ;
END;查看 SHOW TRIGGERS ;删除 DROP TRIGGER [schema_name.]trigger_name;
--如果没有指定schema_name默认为当前数据库。1.案例
通过触发器记录user表的数据变更日志将变更日志插入到日志表user_logs中,包含增加,修改删除; 通过触发器记录USER表的数据变更日志将变更日志插入到日志表User_Logs中包含增加修改删除 代码如下示例 create table user_logs(id int(11) not null auto_increment,operation varchar(20) not null comment 操作类型insert/update/delete ,operate_time datetime not null comment 操作时间,operate_id int(11) not null comment操作的ID,operate_params varchar(500) comment 操作参数,primary key(id)
)engineinnodb default charsetutf8;-- 插入数据触发器
create trigger tb_user_insert_triggerafter insert on user for each row
begininsert into user_logs(id,operation,operate_time,operate_id,operate_params) VALUES
(null, insert, now(), new.id, CONCAT(插入的数据内容为:id, new.id,,name, new.name,,phone, NEW.phone,,email,NEW.email,,profession,NEW.profession));
end;show triggers;drop trigger tb_user_insert_triggerinsert into user(id, name, phone, email, profession) VALUES(25,二皇子,18809091212 ,erhuangzi163.com,软件工程);-- 更新
create trigger tb_user_update_triggerafter update on user for each row
begininsert into user_logs(id,operation,operate_time,operate_id,operate_params) VALUES
(null, update, now(), new.id, CONCAT(更新前数据内容为:id, old.id,,name, old.name,,phone, old.phone,,email,old.email,,profession,old.profession,| 更新后数据内容为:id, new.id,,name, new.name,,phone, NEW.phone,,email,NEW.email,,profession,NEW.profession));
end;update user set name 大皇子 where id 25;-- 删除
create trigger tb_user_delete_triggerafter delete on user for each row
begininsert into user_logs(id,operation,operate_time,operate_id,operate_params) VALUES
(null, delete, now(), old.id, CONCAT(删除数据内容为:id, old.id,,name, old.name,,phone, old.phone,,email,old.email,,profession,old.profession
));
end;delete from user where id 25;总结
可以在表数据进行INSERT、UPDATE、DELETE之前或之后触发保证数据完整性、日志记录、数据校验