在PL-SQL中编写触发器

在PL-SQL中编写触发器

ID:38214832

大小:51.00 KB

页数:4页

时间:2019-05-25

在PL-SQL中编写触发器_第1页
在PL-SQL中编写触发器_第2页
在PL-SQL中编写触发器_第3页
在PL-SQL中编写触发器_第4页
资源描述:

《在PL-SQL中编写触发器》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、在PL/SQL中编写触发器----------------------------------触发器---------------------------------创建测试表--createtablet1(t1_idnumberprimarykey,t1_namevarchar2(20))--创建序列--dropsequenceseq_t1_idcreatesequenceseq_t1_id--测试--insertintot1(t1_id,t1_name)values(seq_t1_id.nextval,'a');insertintot1(t

2、1_id,t1_name)values(seq_t1_id.nextval,'b');insertintot1(t1_id,t1_name)values(seq_t1_id.nextval,'c');commit;--编写触发器,实现id的自动增长--createorreplacetriggertr_t1_autoIdbeforeinsertont1foreachrowbeginselectseq_t1_id.nextvalinto:new.t1_idfromdual;end;insertintot1(t1_name)values('d');i

3、nsertintot1(t1_name)values('e');insertintot1(t1_name)values('f');commit;----实现工资只能增加,不能减少--createorreplacetriggertr_emp_salbeforeupdateonempforeachrowdeclarebeginif(:old.sal>:new.sal)thenraise_application_error(-20009,'老板,我每天都努力工作,怎么能减我的工资呢');endif;end;updateempsetsal=1000wh

4、ereempno=7002;---使用条件谓词-----------------------更新员工工资,只能增加,不能减少;删除员工,不能删除项目经理--createorreplacetriggertr_emp_salbeforeupdateordeleteonempforeachrowbeginifupdatingthenif(:old.sal>:new.sal)thenraise_application_error(-20009,'老板,我每天都努力工作,怎么能减我的工资呢');endif;endif;ifdeletingthenif(:

5、old.job='MANAGER')thenraise_application_error(-20009,'不能删除项目经理');endif;endif;end;select*fromempdeletefromempwhereempno=7566---添加员工,超过3人不能添加--createorreplacetriggertr_emp_addbeforeinsertonempforeachrowdeclarev_countnumber;beginselectcount(*)intov_countfromempwheredeptno=:new.

6、deptno;ifv_count>=3thenraise_application_error(-20010,'此部门人数太多,不能再添加');endif;end;selectdeptno,count(*)ascountsfromempgroupbydeptnoinsertintoemp(empno,ename,sal,deptno)values(6001,'大傻',3000,50)----修改部门编号,该部门的员工部门编号也随之变化---createorreplacetriggertr_dept_update_deptnoafterupdate

7、ofdeptnoondeptforeachrowbeginupdateempsetdeptno=:new.deptnowheredeptno=:old.deptno;end;--测试--select*fromdeptselect*fromempupdatedeptsetdeptno=21wheredeptno=20-----看新记录的id是几?--createorreplacetriggertr_t1beforeinsertont1foreachrowdeclarev_maxt1.t1_id%type;beginselectmax(t1_id)

8、intov_maxfromt1;dbms_output.put_line(v_max);:new.t1_id:=nvl(v_max,0)+1;end;

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。