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;
时间: 2024-10-27 19:24:54