MySQL自学笔记——触发器

本文介绍了数据库触发器的基本概念,它用于在INSERT、UPDATE、DELETE事件发生时自动执行特定操作。通过创建触发器,可以在数据修改时确保逻辑的正确执行,例如在员工表中设置一个检查薪资是否高于其领导的触发器。触发器的创建、查看和删除过程也进行了说明,同时指出在存在外键约束的情况下,某些操作不会激活基于子表的触发器。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

概念

触发器是由事件来触发某个操作,这些事件包括INSERT、UPDATE 、DELETE 事件。所谓事件就是指用户的动作或者触发某项行为。如果定义了触发程序,当数据库执行这些语句时候,就相当于事件发生了,就会自动激发触发器执行相应的操作。

当对数据表中的数据执行插入、更新和删除操作,需要自动执行一-些数据库逻辑时,可以使用触发器来实现。
 

创建触发器

CREATE TRIGGER 触发器名称

{BEFORE|AFTER}  {INSERT|UPDATE|DELETE} ON 表名

FOR  EACH  ROW

触发器执行的语句块(可以是单个SQL语句,也可以是BEGIN END组成的复杂语句块)

employee表

employee_id

first_name

last_name

email

phone_number

job_id

salary

commission_pct

manager_id

department_id

CREATE TRIGGER check_salary BEFORE INSERT ON employee FOR EACH ROW
BEGIN
	DECLARE
		mgr_salary DOUBLE;
	SELECT
		salary INTO mgr_salary 
	FROM
		employee 
	WHERE
		employee_id = NEW.manager_id;#NEW表示新添加到表中的一条记录
	IF
		NEW.salary > mgr_salary THEN
			SIGNAL SQLSTATE 'HYOOO' 
			SET MESSAGE_TEXT = '薪资高于领导薪资错误';
		
	END IF;

END

查看所有触发器 

SHOW TRIGGERS;     //查看当前数据库的所有触发器的定义

SHOW CREATE TRIGGERS 触发器名称;     //查看当前数据库中某个触发器的定义

SELECT  *  from information_schema.`TRIGGERS`;    //从系统库的触发器表中产看

删除触发器

DROP TRIGGER 触发器名称; 

注意 

如果在子表中定义了外键约束,并且外键指定了ON UPDATE/DELETE CASCODE/SET NULL子句,此时修改父表被引用的键值,也会引起子表的修改,但基于子表的UPDATE和DELETE语句定义的触发器并不会被激活。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值