mysql 、sql server trigger 触发器

sql server

mySQL

复制代码
create trigger 触发器名称
{ before | after }  [ insert | update | delete ] on  表名
for each  row
触发器执行的语句块

## 表名:  表示触发器监控的对象
## before |  after :  表示触发的时间,before  :  表示在事件之前触发;  after:表示在事件之后触发
##  insert  |   update  |  delete :表示触发的事件
      Insert: 表示插入记录时触发
      update: 表示更新记录时触发
      delete:表示删除记录时触发
 ## 触发器执行语句块:  可以是单条sql语句,也可以有 begin  。。。。end  结构组成的复合语句块,注意要加 delimiter  $   .....delimiter ;

NEW与OLD详解

MySQL 中定义了 NEW 和 OLD,用来表示触发器的所在表中,触发了触发器的那一行数据,来引用触发器中发生变化的记录内容,具体地:

在INSERT型触发器中,NEW用来表示将要(BEFORE)或已经(AFTER)插入的新数据;

在UPDATE型触发器中,OLD用来表示将要或已经被修改的原数据,NEW用来表示将要或已经修改为的新数据;

在DELETE型触发器中,OLD用来表示将要或已经被删除的原数据;

使用方法:

NEW.columnname:新增行的某列数据(columnName为相应数据表某一列名)

OLD.columnname:删除行的某列数据(columnName为相应数据表某一列名)

另外,OLD是只读的,而NEW则可以在触发器中使用 SET 赋值,这样不会再次触发触发器,造成循环调用

sql server Insertded 等价 Mysql NEW deleted表 等价 OLD 表

查看触发器

1、SHOW TRIGGERS语句查看触发器信息

#查询所有触发器

SHOW TRIGGERS

查看指定触发器定义

show create trigger 触发器名称

结果,显示所有触发器的基本信息;无法查询指定的触发器

2、在information_schema.triggers表中查看指定触发器信息

#查询指定触发器

SELECT * FROM information_schema.triggers WHERE TRIGGER_NAME='trig1';

结果,显示所有触发器的详细信息;同时,该方法可以查询制定触发器的详细信息。

Tips:所有触发器信息都存储在information_schema数据库下的triggers表中,可以使用SELECT语句查询,如果触发器信息过多,最好通过TRIGGER_NAME字段指定查询。

删除触发器

DROP TRIGGER [IF EXISTS] [schema_name.]trigger_name

复制代码
#删除指定触发器
drop trigger  trig1;

总结

触发器是基于触发的,所以删除、新增或者修改操作可能都会激活触发器,所以不要编写过于复杂的触发器,也不要增加过多的触发器,这样会对数据的插入、修改或者删除带来比较严重的影响,同时也会带来可移植性差的后果,所以在设计触发器的时候一定要有所考虑。

触发器是一种特殊的存储过程,它在插入,删除或修改特定表中的数据时触发执行,它比数据库本身标准的功能有更精细和更复杂的数据控制能力。

相关推荐
秋918 分钟前
ruoyi项目更换为mysql9.7.0数据库
数据库
Andya_net25 分钟前
MySQL | MySQL 8.0 权限管理实践-精确赋予库、表只读等权限
android·数据库·mysql
筑梦之路2 小时前
harbor数据库报错权限异常如何处理——筑梦之路
数据库·harbor
czlczl200209252 小时前
理解 MySQL 行锁:两阶段锁协议与热点更新优化
数据库·mysql
AllData公司负责人2 小时前
通过Postgresql同步到Doris,全视角演示AllData数据中台核心功能效果,涵盖:数据入湖仓,数据同步,数据处理,数据服务,BI可视化驾驶舱
java·大数据·数据库·数据仓库·人工智能·python·postgresql
哆啦A梦15883 小时前
20, Springboot3+vue3实现前台轮播图和详情页的设计
javascript·数据库·spring boot·mybatis·vue3
渣渣盟4 小时前
Mysql入门到精通全集(SQL99)包含关系运算,软考数据库工程师复习首选
数据库·mysql·oracle
阿里云大数据AI技术4 小时前
一条 SQL 生成广告:Hologres 如何实现素材生成到投放分析一体化
人工智能·sql
dishugj4 小时前
HANA 数据库的核心进程架构
数据库
2301_782040454 小时前
CSS Flex布局中如何实现导航栏与Logo的左右分布_利用justify-content- space-between
jvm·数据库·python