首页 > 代码库 > mysql_15_触发器

mysql_15_触发器

 1 USE db_book;
 2 SELECT * FROM t_book;
 3 SELECT * FROM t_booktype;
 4 -- 第九章:触发器
 5 -- 第一节:触发器的引入
 6 --     触发器(TRIGGER)是由事件来触发某个操作。这些操作包括INSERT语句,UPDATE语句
 7 --     和DELETE语句。当数据库系统执行这些事件时,就会激活触发器执行响应的操作。
 8 
 9 
10 -- 第二节:创建与使用触发器
11 -- 2.1创建只有一个执行语句的触发器
12 --     CREATE TRIGGER 触发器名称 BEFORE|AFTER 触发事件 
13 --             ON 表名 FOR EACH ROW 执行语句
14 CREATE TRIGGER trig_book AFTER INSERT
15         ON t_book FOR EACH ROW 
16                 UPDATE t_booktype SET bookNum=bookNum+1 WHERE new.bookTypeId=t_booktype.id; -- new:过度变量
17 
18 INSERT INTO t_book VALUES(NULL,"算法导论",84,"作者1",1);
19 
20 -- 2.2创建有多个执行语句的触发器
21 --     CREATE TRIGGER 触发器名称 BEFORE|AFTER 触发事件 
22 --             ON 表名 FOR EACH ROW 
23 --             BEGIN 
24 --             执行语句列表
25 --             END
26 CREATE TABLE t_log(
27 id int PRIMARY KEY NOT NULL auto_increment,
28 actionTime datetime,
29 actionContext VARCHAR(100)
30 )
31 
32 CREATE TABLE t_test(
33 id int PRIMARY KEY NOT NULL auto_increment,
34 test VARCHAR(10)
35 )
36 
37 INSERT INTO t_test VALUES (null,"aaa");
38 
39 SELECT * FROM t_log;
40 SELECT * FROM t_test;
41 
42 CREATE TRIGGER trig_book2 AFTER DELETE
43         ON t_book FOR EACH ROW
44         BEGIN
45                 UPDATE t_bookType SET bookNum=bookNum-1 WHERE old.bookTypeId=t_bookType.id;
46                 INSERT INTO t_log VALUES (NULL,NOW(),"在t_book表中删除了一条数据");
47                 DELETE FROM t_test WHERE old.bookTypeId=t_test.id;
48         END
49 
50 DELETE FROM t_book WHERE bookName="算法导论";
51 
52 SELECT * FROM t_book;
53 SELECT * FROM t_booktype;
54 SELECT * FROM t_log;
55 SELECT * FROM t_test;
56 
57 
58 -- 第三节:查看触发器
59 --     3.1 SHOW TRIGGERS 语句查看触发器信息(所有触发器)
60 SHOW TRIGGERS;
61 
62 --     3.2 在tiggers表中查看触发器信息
63 -- 在系统数据库information_schema中的tiggers表中查看
64 
65 -- 第四节:删除触发器
66 -- DROP TRIGGER 触发器名称;
67 DROP TRIGGER trig_book;
68 SHOW TRIGGERS;
69 
70 DROP TRIGGER trig_book2;
71 SHOW TRIGGERS;

 

mysql_15_触发器