鞣酸苦参碱胶囊多少钱:行级触发器,语句触发器,替换触发器

来源:百度文库 编辑:九乡新闻网 时间:2024/04/29 18:29:44
加锁 select * from t1 for update;
行级触发器create or replace trigger del_deptidafter delete on deptmentfor each rowbegindelete from emp where id=:old.id;end del_deptid;/如果rollback 两个表的信息都会回滚
--**************create or replace trigger ins_deptafter insert on deptmentfor each rowbegininsert into emp(eid,ename,id)values('34','fs',:new.id);end;/--***************触发器工作原理 事务相关两个重要的内存表insert newdelete oldupdate new old
--***********create or replace trigger update_deptafter update on deptmentfor each rowbeginupdate emp set id=:new.id where id=:old.id;end;/触发器里面不能写rollback 和commit
阻止更新create or replace trigger books_deleteafter delete on booksfor each rowbeginif :old.id='1' thenraise_application_error(-20000,'不允许删除!');end if;end;/**************************************************************************************以上的行级触发器下面是语句级的触发器create or replace trigger dml_aaafter insert or update or deletebeginif inserting theninsert into logs values(user,sysdate,'i');elseif deleting theninsert into logs values(user,sysdate,'d');elseinsert into logs values(user,sysdate,'u');end if;end;/
***************create or replace trigger seq_nextbefore insert on autofor each rowdeclare idn number(5);beginselect myseq.nextval into idn from dual;:new.a=idn;end;/通过以上的设置就可以使得在往auto 里面插入数据的时候可以用任意的a了因为到了真正插入操作的时候就会有这个触发器来自动生成a的值

***************************************************************************
替换触发器解决多表更新的问题 这种触发器只能建立在视图上
create or replace trigger tr_vinstead of insert on v_emp_deptfor each rowbegininsert into deptment values(:new.id,:new.dname);insert into emp (eid,ename,sex,id) values(:new.eid,:new.ename,:new.sex,:new.id);end