MySQL数据库——触发器

1. 触发器概念

触发器(trigger):监视某种情况,并触发某种操作,它是提供给程序员和数据分析员来保证数据完整性的一种方法,它是与表事件相关的特殊的存储过程,它的执行不是由程序调用,也不是手工启动,而是由事件来触发,例如当对一个表进行操作( insert,delete, update)时就会激活它执行。

触发器经常用于加强数据的完整性约束和业务规则等。 触发器创建语法四要素:

  1. 监视地点(table)
  2. 监视事件(insert/update/delete)
  3. 触发时间(after/before)
  4. 触发事件(insert/update/delete)

触发器SQL语法:

create trigger triggerName
after/before insert/update/delete on 表名
for each row #这句话在mysql是固定的
begin
sql语句;
end;

2. 触发器作用

  • 可在写入数据前,强制检验或者转换数据(保证护数据安全)
  • 触发器发生错误时,前面用户已经执行成功的操作会被撤销,类似事务的回滚

3. 简单的Insert触发器

create trigger in_user
after insert on user for each row
begin
insert into tb_account( id, username)
values( new.id, new.name);
end;

建立该触发器后每次向user表添加一条数据都会触发该触发器(向tb_account表插入数据)

MySQL 的触发器中不能对本表进行 insert、update 和 delete 操作,否则会报错

4. 触发器的激活

触发器的执行是由触发事件激活,并由数据库服务器自动执行的。一个数据表上可能定义了多个触发器,如多个 BEFORE AFTER触发器等,同一个表上的多个触发器激活时遵循如下的执行顺序:
(1)执行该表上的 BEFORE触发器。
(2)激活触发器的SQL语句。
(3)执行该表上的 AFTER触发器。
对于同一个表上的多个 BEFORE(AFTER)触发器,遵循“谁先创建谁先执行”的原则,
即按照触发器创建的时间先后顺序执行。有些关系数据库管理系统是按照触发器名称的字母排序顺序执行触发器。

5. 删除触发器

触发器不能修改,只能删除
删除触发器的SQL语法如下:

drop trigger 触发器名;

触发器必须是一个已经创建的触发器,并且只能由具有相应权限的用户删除。

6. 优缺点

优点:

  • 触发器可以通过数据库中的关联表实现级联更改,即一张表数据的改变会影响其他表的数据
  • 可以保证数据安全,并进行安全校验

缺点

  • 过分依赖触发器,影响数据库的结构,增加数据库的维护成本
-------------本文结束感谢您的阅读-------------