触发器:
触发器是与表有关的数据库对象,指在insert\update\delete之前或之后,触发并执行触发器中定义的SQL语句集合。
触发器的这种特性可以协助应用在数据库段确保数据的完整性,日志记录,数据校验等操作。
使用别名OLD和NEW来引用触发器中发生变化的记录内容,这与其他的数据库是相似的。
现在触发器还只支持行级触发,不支持语句级触发。
示例一:insert
注:new 表示新数据
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | -- 插入数据触发器 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表示原始老数据;当更改的数据行为多行数据时,触发器将会被触发多次(即,修改一行数据,触发一次)。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | -- 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
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | -- 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' ;<br> delete from tb_users where name = '张三封' ; |
博客内容主要用于日常学习记录,内容比较随意,如有问题,还需谅解!!!
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 【.NET】调用本地 Deepseek 模型
· CSnakes vs Python.NET:高效嵌入与灵活互通的跨语言方案对比
· DeepSeek “源神”启动!「GitHub 热点速览」
· 我与微信审核的“相爱相杀”看个人小程序副业
· Plotly.NET 一个为 .NET 打造的强大开源交互式图表库
2017-07-25 C#发布程序添加其他程序文件
2016-07-25 winform实现word转换为PDF(.doc)