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 INSERT15 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 -- END26 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 DELETE43 ON t_book FOR EACH ROW44 BEGIN45 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 END49 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;