概述
1.触发器的引入
触发器(TRIGGER)是由事件来触发某个操作。这些时间包括insert语句、update语句和delete语句,当数据库系统执行这些事件时,就会激活触发器执行相应的操作。
2.创建与使用触发器
1.创建一个只有一个执行语句的触发器
语法:
create trigger 触发器名 before/after 触发事件
on 表名 for each row 执行语句
操作步骤:
step1: 首先创建两张表 book 、booktype
step2:.创建一个只执行一条语句的触发器,实现book里插入一本书,booktype对应的类型书的bookNum数量加1
mysql> create trigger trig_book after insert
-> on book for each row
-> update booktype set bookNum=bookNum+1 where new.bookTypeId=booktype.id;
step3:查询触发器执行结果:
mysql> insert into book values(null,'深入理解java',1);
Query OK, 1 row affected (0.35 sec)
mysql> select * from book;
+----+------------------+------------+
| id | name | bookTypeId |
+----+------------------+------------+
| 1 | 深入理解java | 1 |
+----+------------------+------------+
1 row in set (0.00 sec)
mysql> select * from booktype;
+----+--------------+---------+
| id | bookType | bookNum |
+----+--------------+---------+
| 1 | 计算机类 | 1 |
| 2 | 文学类 | 0 |
| 3 | 教育类 | 0 |
| 4 | 生物类 | 0 |
| 5 | 其他 | 0 |
+----+--------------+---------+
5 rows in set (0.00 sec)
2.创建有多个执行语句的触发器
语法:
create trigger 触发器名 before/after 触发事件
on 表名 for each row
begin
执行语句列表
end
操作步骤:
step1:由于想要使用删除命令,于是往表中多插入了几行数据,两个表现在的状态如下:
step2:因为要进行多个语句,因此又创建了一个book_log表
step3:进行创建有多个执行语句的触发器,实现book里删除一本书,booktype对应的类型书的bookNum数量减1,book_log里增加一行删除日志。
mysql> delimiter ||
mysql> create trigger trig_book2 after delete
-> on book for each row
-> begin
-> update booktype set bookNum=bookNum-1 where old.bookTypeId=booktype.id;
-> insert into book_log values(null,now(),"删除了一条数据");
-> end||
Query OK, 0 rows affected (0.08 sec)
mysql> delimiter ;
step4:查询创建结果
mysql> delete from book where id=2;
Query OK, 1 row affected (0.06 sec)
mysql> select * from book;
+----+------------------+------------+
| id | name | bookTypeId |
+----+------------------+------------+
| 1 | 深入理解java | 1 |
| 3 | 学前教育 | 3 |
| 4 | 生物与科学 | 4 |
+----+------------------+------------+
3 rows in set (0.00 sec)
mysql> select * from booktype;
+----+--------------+---------+
| id | bookType | bookNum |
+----+--------------+---------+
| 1 | 计算机类 | 1 |
| 2 | 文学类 | 0 |
| 3 | 教育类 | 1 |
| 4 | 生物类 | 1 |
| 5 | 其他 | 0 |
+----+--------------+---------+
5 rows in set (0.00 sec)
mysql> select * from book_log;
+----+---------------------+-----------------------+
| id | time | log |
+----+---------------------+-----------------------+
| 2 | 2019-05-02 20:02:18 | 删除了一条数据 |
+----+---------------------+-----------------------+
1 row in set (0.00 sec)
3.查看触发器
1.show triggers 语句查看触发器信息
mysql> show triggers;
2.在triggers表中查看触发器信息
4.删除触发器
drop trigger 触发器名
mysql> drop trigger trig_book2;
最后
以上就是壮观纸飞机为你收集整理的mysql 触发器简单操作的全部内容,希望文章能够帮你解决mysql 触发器简单操作所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复