MySQL学习笔记6(触发器)

MySQL学习笔记6

触发器

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

1:触发器的含义和作用
2:如何创建触发器
3:如何查看触发器
4:如何删除触发器

1.1:创建只有一个执行语句的触发器

语法基本形式为:
CREATE TRIGGER 触发器名 BEFORE | AFTER 触发事件
ON 表名 FOR EACH ROW 执行语句

CREATE TRIGGER dept_trig1 BEFORE INSERT
ON department FOR EACH ROW
INSERT INTO trigger_time VALUES(NOW());

该语句的意思是指:在向department表中插入数据前向trigger_time表中插入当前时间。

1.2:创建有多个执行语句的触发器

语法基本形式为:
CREATE TRIGGER 触发器名 BEFORE | AFTER 触发事件
ON 表名 FOR EACH ROW
BEGIN
执行语句列表
END

BEGIN和END之间的“执行语句列表”参数表示需要执行的多个执行语句的内容,不同的执行语句之间用分号。

DELIMITER ##; 程序结束符号变为##;。

CREATE TRIGGER dept_trig2 AFTER INSERT
ON department FOR EACH ROW
BEGIN
INSERT INTO trigger_time VALUES('21:23:05');
INSERT INTO trigger_time VALUES('21:25:13');
END
##;

2:查看触发器

查看触发器的方法包括SHOW TRIGGERS语句和查询information_schema数据库下的triggers表等。

SHOW TRIGGERS\G

显示当前所有触发器:
***************** 1. row *****************
Trigger: dept_trig1
Event: INSERT
Table: department
Statement: INSERT INTO trigger_time VALUES(NOW())
Timing: BEFORE
Created: 2016-03-12 20:12:41.75
sql_mode: STRICT_TRANS_TABLES,NO_ENGINE_SUBSTITUTION
Definer: root@localhost
character_set_client: utf8
collation_connection: utf8_general_ci
Database Collation: utf8_general_ci
***************** 2. row *****************
Trigger: dept_trig2
Event: INSERT
Table: department
Statement: BEGIN
INSERT INTO trigger_time VALUES(‘21:23:05’);
INSERT INTO trigger_time VALUES(‘21:25:13’);
END
Timing: AFTER
Created: 2016-03-12 20:33:16.32
sql_mode: STRICT_TRANS_TABLES,NO_ENGINE_SUBSTITUTION
Definer: root@localhost
character_set_client: utf8
collation_connection: utf8_general_ci
Database Collation: utf8_general_ci

MySQL中,所有触发器的定义都存在information_schema数据库的triggers表中。

SELECT * FROM information_schema.triggers\G
SELECT * FROM information_schema.triggers WHERE TRIGGER_NAME='dept_trig1'\G

第一个语句显示所有触发器
第二个语句显示指定触发器名的触发器

3:删除触发器

删除触发器使用的语法形式如下:
DROP TRIGGER 触发器名;

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值