触发器
我在想,一个PPT和书本的关系,他们就是书本的缩影么,还是其他的一些东西
10.1 创建触发器
10.1.1 创建只有一个执行语句的触发器
创建一个触发器的语法如下:
CREATE TRIGGER trigger_name trigger_time trigger_event
ON tbl_name FOR EACH ROW trigger_stmt
10.1.2 创建有多个执行语句的触发器
创建多个执行语句的触发器的语法如下:
CREATE TRIGGER trigger_name trigger_time trigger_event
ON tbl_name FOR EACH ROW trigger_stmt
10.2 查看触发器
10.2.1 SHOW TRIGGERS语句查看触发器信息
通过SHOW TRIGGERS查看触发器。
SHOW TRIGGERS;
10.2.2 在triggers表中查看触发器信息
在MySQL中所有触发器的定义都存在INFORMATION_SCHEMA数据库的TRIGGERS表格中,可以通过查询命令SELECT来查看。
SELECT * FROM INFORMATION_SCHEMA.TRIGGERS
WHERE condition;
10.3 触发器的使用
触发程序是与表有关的命名数据库对象,当表上出现特定事件时,将激活该对象。在某些触发程序的用法中,可用于检查插入到表中的值,或对更新涉及的值进行计算。
INSERT、DELETE或UPDATE
10.4 删除触发器
使用DROP TRIGGER语句可以删除MySQL中已经定义的触发器。
DROP TRIGGER [schema_name.]trigger_name
mysql> drop trigger num_sum;
Query OK, 0 rows affected (0.01 sec)
10.5 综合案例——触发器使用
介绍了MySQL数据库的触发器的定义和作用、创建触发器、查看触发器、使用触发器和删除触发器等内容。创建触发器和使用触发器是本章的重点内容。在创建触发器的时候一定要弄清楚触发器的结构,在使用触发器的时候,要清楚触发器触发的时间(BEFORE或AFTER)和触发的条件是(INSERT、DELETE或UPDATE)。在创建了触发器后,要清楚怎么修改触发器。
创建一个persons表
mysql> create table persons(name varchar(50),num int);
Query OK, 0 rows affected (0.10 sec)
创建一个sales表
mysql> create table sales(name varchar(40),sum int)
-> ;
Query OK, 0 rows affected (0.06 sec)
创建一个触发器,在更新persons表的num字段后,更新sales表的sum字段;
这里需注意 for each row 语句啥意思;这语句连接上下文
mysql> create trigger num_sum after insert on persons for each row insert into sales values(new.name,7*new.num);
Query OK, 0 rows affected (0.02 sec)
向persons表中插入数据
mysql> insert into persons values('xiaoxiao',20),('xiaohua',69)
-> ;
Query OK, 2 rows affected (0.02 sec)
Records: 2 Duplicates: 0 Warnings: 0
展示结果
mysql> select * from persons;
+----------+------+
| name | num |
+----------+------+
| xiaoxiao | 20 |
| xiaohua | 69 |
+----------+------+
2 rows in set (0.00 sec)
mysql> select * from sales;
+----------+------+
| name | sum |
+----------+------+
| xiaoxiao | 140 |
| xiaohua | 483 |
+----------+------+
2 rows in set (0.00 sec)