mysql数据库之触发器

news/2024/6/18 22:48:12 标签: 数据库, sql, oracle

触发器是与表有关的数据库对象,指在insert、update、delete之前或之后,触发并执行触发器中定义的SQL语句集合。触发器的这种特性可以协助应用在数据库端确保数据的完整性,日志记录,数据校验等操作。

使用别名old和new来引用触发器中发生变化的记录内容,这与其他的数据库是相似的。现在触发器还只支持行级触发,不支持语句级触发。

触发器类型new和old
insert触发器new表示将要或者已经新增的数据
update触发器old表示修改之前的数据,new表示将要或已经修改后的数据
delete触发器old表示将要或者已经删除的数据

一、语法。

1、创建。

sql">create trigger trigger_name
before/after insert/update/delete
on tbl_name for each row #行级触发器
begin
  trigger_stmt;
end;

2、查看。

sql">show triggers;

3、删除。

sql">drop trigger [schema_name.]trigger_name;#如果没有指定数据库名字schema_name,默认为当前数据库

二、案例一。

通过触发器记录tb_user表的数据变更日子,将变更日志插入到日志表user_logs中,包含增加、修改、删除;

1、创建表user_logs

2、定义插入数据表的触发器

sql">create trigger tb_user_insert_trigger
after insert on tb_user for each row
begin
  insert 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;

3、查看触发器

sql">show triggers;

4、删除指定的触发器

sql">drop trigger tb_user_insert_trigger;

5、插入数据到tb_user表中

sql"> insert into user_logs(id,name,phone,email,profession,age,gender,status,createtime) values
  (25,'二皇子','18803031212','erhuangzi@163.com','软件工程',23,'1','1',now());

6、mysql数据库查看显示插入记录。

7、修改数据触发器

sql">create trigger tb_user_update_trigger
after update on tb_user for each row
begin
  insert 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;

show triggers;

8、把id为23的age更改为32,把这条数据的专业改为会计

sql">update tb_user set age = 32 where id = 23;
update tb_user set profession = '会计' where id = 23;
#把id小于等于5的专业改为会计,触发器质性5次,因为是行级触发器
update tb_user set profession = '会计' where id <= 5;

9、删除数据的触发器

sql">create trigger tb_user_delete_trigger
after delete on tb_user for each row
begin
  delete 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;

show triggers;

10、删除id等于25的记录。

sql">delete from tb_user where id = 25;


http://www.niftyadmin.cn/n/131414.html

相关文章

基于遗传算法的工序优化,MATALB编程遗传算法实现工序优化实现

目录 背影 遗传算法的原理及步骤 代码 结果分析 展望 背影 工序优化常见于生存活动中,对提高经济效益有重要意义,传统的优化算法常见最大最小优化fminmax,整数规划fmincon等,但是这些算法都容易陷入局部最优,本文用遗传算法进行求解,遗传算法拥有更好的全局寻优能力,…

省赛第一次训练赛题解

省赛第一次训练赛题解 A(CF1451C) 由于没有操作次数的限制&#xff0c;很容易想到对于任意 k 个相同的字符&#xff0c;他们都可以通过交换换到一起之后修改。而对于两个按照字母顺序排序之后相同的字符串&#xff0c;从第一个也可以经过若干交换换到第二个。 所以问题变成了…

Javascript 设计模式

设计模式的五大设计原则(SOLID)单一职责&#xff1a;一个程序只需要做好一件事。如果功能过于复杂就拆分开&#xff0c;保证每个部分的独立开放封闭原则:对扩展开放&#xff0c;对修改封闭。增加需求时&#xff0c;扩展新代码&#xff0c;而不是修改源代码。这是软件设计的终极…

微电影广告发展的痛点

微电影广告以不可阻挡之势进入大众生活中&#xff0c;企业利用微电影广告来进行企业形象塑造的例子比比皆是。于是乎&#xff0c;微电影广告在为企业塑造品牌形象方面上取得了可喜的效果&#xff0c;但也不可忽视&#xff0c;在这个发展过程中&#xff0c;微电影广告所面临的问…

简单理解TensorFloat32

目录 1. NVIDIA TF32 1.1 数据格式比较 1.2 使用方法及条件 NVIDIA TF32开关 2. Pytorch 2.1 Pytorch对NVIDIA TF32的支持 2.2 Pytorch自动混合精度AMP 参考 1. NVIDIA TF32 TensorFloat-32&#xff0c;是NVIDIA在Ampere架构的GPU上推出的专门运用于TensorCore的一种计算格式。…

面试官:什么是双亲委派模型?如何打破它?

本文已经收录进 JavaGuide(「Java学习+面试指南」一份涵盖大部分 Java 程序员所需要掌握的核心知识。) 参加过校招面试的同学,应该对这个问题不陌生。一般提问 JVM 知识点的时候,就会顺带问你双亲委派模型(别扭的翻译。。。)。 就算是不准备面试,学习双亲委派模型对于我…

盘点曾经很火但消失了的8个软件

目录 1、飞信 3、暴风影音 4、千千静听 5、虾米音乐 6、快车下载 7、人人网 8、QQ农场 今天小编给大家分享曾经很火但消失了的8个软件&#xff0c;你都用过吗&#xff1f; 1、飞信 飞信是中国移动通信集团公司推出的一款短信、语音、视频通信应用程序。它于2007年推出&a…

Python正则表达式中的re模块学习笔记

官方教程 https://docs.python.org/zh-cn/3.9/library/re.html 参考资料&#xff1a; 01-https://www.runoob.com/python/python-reg-expressions.html 02-Python 3.7.1 模块 文本处理 正则表达式 什么叫正则表达式&#xff1f;正则表达式是一个特殊的字符序列&#xff0c;它…