触发器的基础介绍

一.为什么有触发器?

1.1很多时候,我们数据库的表都要进行关联其他的表,为了确保数据的一致性。但是在增删改操作之后,我们如何确保数据的一致性呢?就比如学生的信息表和学生的课程表,我们要删除一个学生的信息,我们不能只删除学生信息而不删除该学生的课程信息吧。此时,你想到那我可以再把该学生的课程信息也删除啊。对,这是没错的。但是这两个操作必须在一个事务中,根据事物的原子性的特点,要么都执行成功,要么都执行失败。但是有时候,我们常常会忘记把关联的表的相应记录也进行更改,那个这个时候就需要有个程序可以帮我们自动更改。这就是我们说的触发器。

二.什么是触发器?

2.1 触发器就是当我们触发某个事件的时候,会自动触发触发器执行相应的操作。这里事件包括update|delete|insert数据操作。触发器是一种特殊的存储过程,都是一段sql程序,与存储过程不同的是,触发器在事件触发时,自动执行,存储过程则需要手动调用。

三.触发器的创建

3.1 触发器创建的语法结构:

create trigger 触发器名称
{after|before} {update|delete|insert} on 表名
for each row
触发器语句块;

3.2 例子:

CREATE TABLE test_trigger (
id INT PRIMARY KEY AUTO_INCREMENT,
t_note VARCHAR(30)
);
CREATE TABLE test_trigger_log (
id INT PRIMARY KEY AUTO_INCREMENT,
t_log VARCHAR(30)
);
#2、创建触发器:创建名称为before_insert的触发器,向test_trigger数据表插入数据之前,向 test_trigger_log数据表中插入before_insert的日志信息。
DELIMITER //
CREATE TRIGGER before_insert
BEFORE INSERT ON test_trigger
FOR EACH ROW
BEGIN
    INSERT INTO test_trigger_log (t_log)
    VALUES('before_insert');
END //
DELIMITER ;

四. 查看触发器

	#方式一
	show triggers
	#方式二
	show create trigger 触发器名
	#方式三
	select * from information_schema.trigger;	

五.删除触发器

	drop trigger 触发器名

六.触发器的优缺点

6.1 优点

  • 确保数据的一致性
  • 帮助记录日志
  • 在操作日志前,对数据进行合法校验

6.2缺点

  • 可读性差,触发器不受应用层控制,系统维护困难
  • 相关数据的变更,可能会导致触发器出错
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值