触发器

本文详细介绍了数据库触发器的概念,包括触发器的创建、使用、查看和作用。触发器在数据库系统中由INSERT、UPDATE、DELETE事件触发,用于执行相应的操作,如维护数据完整性、实现审计功能和自定义业务规则。同时,文章还讨论了事前触发器和事后触发器的区别,以及行级触发器和语句级触发器的差异。
摘要由CSDN通过智能技术生成

触发器

一、描述
       触发器(TRIGGER)是由事件来触发某个操作。这些事件包括INSERT语句、UPDATE语句和DELETE语句。当数据库系统执行这些事件时,会激活促发其执行相应的操作。

二、创建与使用触发器

1.创建只有一个执行语句的触发器
在这里插入图片描述
例:创建一个trig_book触发器,该触发器在表t_book插入一条数据后,对表t_bookType的bookNum数量对应的bookTypeId会自动加1

 create trigger trig_book after insert 
 on t_book for each row 
     update t_bookType set bookNum = bookNum+1 where new.bookTypeId = t_booktype.id;
 INSERT INTO t_book VALUES(NULL,'java好',100,'ke',1);

t_book表:
在这里插入图片描述
t_bookType表:
在这里插入图片描述
2.创建有多个执行语句的触发器
在这里插入图片描述
例子:

DELIMITER | 数据库语句 | DELIMITER;//告诉数据库这时一条语句内容

       new old 触发的两个过度变量;new:新增一条语句的新增对象;old:删除一条语句的删除对象;

       DELIMITER |
       create trigger trig_book2 after delete
              on t_book for each row
              begin
                     update t_bookType set bookNum = bookNum-1 where                      old.bookTypeId=t_booktype.id;
                     insert into t_log values(null,NOW(),‘在book表里删除了一条数据’);
                     delete from t_test where old.bookTypeId = t_test.id;
              end
       |
       DELIMITER ;

DELETE FROM t_book WHERE id=5;

三、查看触发器

1.SHOWTRIGGERS 语句查看触发器信息

       SHOW TRIGGERS;

2.在 triggers 表中查看触发器信息

       DROP TRIGGER trig_book2 ;

四、触发器的作用
①增加安全性。

②利用触发器记录所进行的修改及相关信息,跟踪用户对数据库的操作,实现审计。

③维护那些通过创建表时的声明约束不可能实现的复杂的完整性约束以及对数据库中特定事件进行监控与响应。

④实现复杂的非标准的数据库相关完整性规则,同步实时的复制表中的数据。

⑤触发器是自动的,他们对表的数据做了任何修改之后都被激活。

例如可以自动计算数据值,若数据的值达到一定要求,则进行特殊处理。以某企业财务管理为例,如果企业的资金出现短缺,并且达到了某种程度,则发出警告信息。

五、触发器分为事先触发器和事后触发器,它们之间的区别
       简单而言,事前触发主要是验证一些条件或进行一些准备工作,在表保存之前就触发,而事后触发则是进行收尾工作,保证事务的完整性,在表经过修改以后才触发。行级触发器是对DML语句影响的每个行执行一次,如UPDATE语句影响多行,就会对每行都激活一次触发器。而语句级触发器是对每个DML语句执行一次,如INSERT语句在表中即使插入了100多行,表上的INSERT语句级触发器也只会执行一次。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值