触发器

我在想,一个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)
posted @ 2021-09-22 13:53  索匣  阅读(151)  评论(0编辑  收藏  举报