抱歉,您的浏览器无法访问本站
本页面需要浏览器支持(启用)JavaScript
了解详情 >

摘要:本文学习了如何使用DDL语句管理触发器。

环境

Windows 10 企业版 LTSC 21H2
MySQL 5.7.40

1 简介

1.1 定义

触发器与存储过程和函数一样,都是由SQL语句和过程式语句组成的代码片段。

触发器需要由某个事件触发某个操作,这些事件包括增删改的DML操作。当数据库执行这些语句时候,就相当于事件发生了,就会自动激发触发器执行相应的操作。

1.2 比较

与存储过程和函数相比,触发器有以下几个特点:

  • 触发器不需要显示调用,当事件触发时会自动调用。
  • 触发器没有返回值,其执行结果是直接对表中的数据进行修改或对触发事件进行处理。
  • 触发器主要用于维护数据的一致性和完整性。

2 操作

2.1 创建

语法:

sql
1
2
3
4
create trigger 触发器名称 
触发时间 触发事件 on 表名
for each row
触发器主体;

说明:

  • 触发器名称:指定触发器的名称。
  • 触发时间:before表示在事件之前触发,after表示在事件之后触发。
  • 触发事件:insert表示插入记录时触发,update表示更新记录时触发,delete表示删除记录时触发。
  • 表名:表示触发器监控的对象。
  • 触发器主体:触发器的主体部分,可以是单条SQL语句,也可以是被beginend包裹的复合语句块。

示例:

sql
1
2
3
4
create trigger scoreBeforeInsert
before insert on score
for each row
insert into score_log (action) values ('insert');

2.2 查看

查看所有触发器:

sql
1
show triggers;

查看触发器的创建:

sql
1
show create trigger 触发器名称;

2.3 修改

可以通过先删除触发器,然后重新创建触发器的方法实现修改的操作。

2.4 删除

语法:

sql
1
drop trigger 触发器名称;

示例:

sql
1
2
3
4
mysql> drop trigger scoreBeforeInsert;
Query OK, 0 rows affected (0.00 sec)

mysql>

评论