1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58
| --1、什么是触发器
--2、触发器的分类 --数据库触发器 和 DML触发器(insert update delete)
--3、触发器的语法 create trigger tri_test after on 表名
old new
select * from student; select * from exam
create trigger tri_addstu before insert on student for each row begin if :new.s_id >= 5 then raise_application_error(-20001,'超过一班的人数'); end if; end;
insert into student values(s_id.nextval,'狮子合唱团','男',6)
--insert 触发器 create trigger tri_addstu2 after insert on student for each row begin insert into exam values(e_id.nextval,:new.s_id,'笔试',0); insert into exam values(e_id.nextval,:new.s_id,'机试',0); end;
--update触发器 create trigger tri_update after update on exam for each row begin update student set s_id=:new.s_id where s_id = :old.s_id; end;
update exam set s_id = 666 where s_id = 12;
--delete触发器 create trigger tri_del after delete on student for each row begin delete from exam where s_id = :old.s_id; end;
delete from student where s_name = '狮子合唱团'
|