MySQL自学笔记——触发器

概念

触发器是由事件来触发某个操作,这些事件包括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语句定义的触发器并不会被激活。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值