网站建设设计费会计分录,汕头seo推广外包,外贸线上推广,固镇网站建设个人简介#xff1a;Java领域新星创作者#xff1b;阿里云技术博主、星级博主、专家博主#xff1b;正在Java学习的路上摸爬滚打#xff0c;记录学习的过程~ 个人主页#xff1a;.29.的博客 学习社区#xff1a;进去逛一逛~ 触发器 ⑩⑥ 【MySQL】触发器详解1. 什么是触发… 个人简介Java领域新星创作者阿里云技术博主、星级博主、专家博主正在Java学习的路上摸爬滚打记录学习的过程~ 个人主页.29.的博客 学习社区进去逛一逛~ 触发器 ⑩⑥ 【MySQL】触发器详解1. 什么是触发器2. 触发器的使用①使用规则②案例 ⑩⑥ 【MySQL】触发器详解 1. 什么是触发器
触发器
触发器是与表有关的数据库对象 指在insert / update / delete之前或之后 触发并执行触发器中定义的SQL语句集合。触发器的这种特性可以协助应用在数据库端确保数据的完整性日志记录数据校验等操作。使用别名OLD和NEW来引用触发器中发生变化的记录内容这与其他的数据库是相似的。现在触发器还只支持行级触发 不支持语句级触发 。 行级触发执行insert / update / delete语句影响5行数据触发器会被触发5次。语句级触发执行insert / update / delete语句影响n行数据触发器只触发1次。 触发器类型
⚪INSERT 触发器NEW 表示将要或已经新增的数据。⚪UPDATE 触发器OLD 表示修改之前的数据NEW 表示将要或已经修改后的数据。⚪DELETE 触发器OLD表示将要或已经删除的数据。 2. 触发器的使用
①使用规则
使用触发器 创建触发器 -- 语法
-- {}内的关键字为必选项任选其一。
-- BEFORE/AFTER表示触发SQL语句的时机在新增/修改/删除操作之前/之后
CREATE TRIGGER 触发器名
{BEFORE | AFTER} {INSERT | UPDATE | DELETE}
ON 表名 FOR EACH ROW
BEGIN-- 触发后执行的SQL语句
END;查看触发器 SHOW TRIGGERS;删除触发器 -- 若不指定schema_name默认当前数据库
DROP TRIGGER [schema_name.]触发器名②案例
准备工作 通过触发器记录 user 表的数据变更日志(user_logs) | 包含增加, 修改 , 删除 -- 需求: 通过触发器记录 user 表的数据变更日志(user_logs) , 包含增加, 修改 , 删除 ;-- 准备工作 : 日志表 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;INSERT触发器 案例
-- 插入数据触发器
DELIMITER $$CREATE TRIGGER tb_user_insert_trigger
AFTER INSERT
ON tb_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$$DELIMITER ;-- 查看触发器
SHOW TRIGGERS ;-- 插入数据到tb_user
INSERT INTO tb_user(id, NAME, phone, email, profession, age, gender, STATUS, createtime) VALUES
(26,三皇子,18809091212,erhuangzi163.com,软件工程,23,1,1,NOW());-- 查看触发器触发后的日志表
SELECT * FROM user_logs;-- 删除触发器
drop trigger tb_user_insert_trigger; UPDATE触发器 案例
-- 修改数据触发器
DELIMITER $$CREATE TRIGGER tb_user_update_trigger
AFTER UPDATE
ON tb_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$$DELIMITER ;-- 查看触发器
SHOW TRIGGERS ;-- 执行更新操作
UPDATE tb_user SET profession 会计 WHERE id 23;
UPDATE tb_user SET profession 会计 WHERE id 5;-- 查看触发器触发后的日志表
SELECT * FROM user_logs;DELETE触发器 案例
-- 删除数据触发器
DELIMITER $$CREATE TRIGGER tb_user_delete_trigger
AFTER DELETE
ON tb_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$$DELIMITER ;-- 查看触发器
SHOW TRIGGERS ;