mysql学习七:触发器

 

触发器:是由事件来触发某个操作。这些事件包括insert语、update语句,delete语句。当数据库系统执行这些事件时,就会激活触发器执行相应的操作

一、创建与使用触发器:

1.创建触发器:

create trigger 触发器名称 before|after 触发事件 on 表名 for each row 执行语句;

 

create trigger trig_book after insert on book for each row update bookType set bookNum=bookNum+1 where new.bookTypeId=bookType.id;

 

过渡变量new:是指新插入、更新的那条数据

过渡变量old:是指删除的那条数据

insert into book values(null, 'java nice', 100, 'xy', 1);
select * from book;
select * from bookType;

 

2.创建有多个执行语句的触发器

新建示例表:

create table bookLog (id int,
actionTime DATE,
actionContent varchar(255)
);
create table bookTest (id int,
text varchar(300)
);
insert into bookTest values(2, 'abc');

 

 创建多个执行语句的触发器:

delimiter |
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 bookLog values (null, NOW(), '在book表里删除了一条数据');
delete from bookTest where old.bookTypeId=bookTest.id;
end
|
delimiter;

 

分号结束的语句,在sql里就是执行;因此这里需要加一个delimiter |..........| delimiter; 使得不要遇到分号就执行里面的语句。

delete from book where id=3;
select * from bookType;
select * from booklog;
select * from booktest;

 

执行第一条语句delete之后,将触发触发器

第二条语句,查看结果:bookType中计数已减1

第二语句,查看结果:bookLog中插入了一条记录

第三条语句,查看结果:bookTest表中删除了booktest.id=old.bookTypeId的记录

 

二、查看触发器:

show triggers;

或者在triggers表中查看

 

 三、删除触发器:

drop trigger trig_book;
drop trigger trig_book2;

 

posted on 2018-09-16 14:12  myworldworld  阅读(111)  评论(0)    收藏  举报

导航