日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

图解Oracle 12c 触发器实例

發(fā)布時間:2025/4/14 编程问答 15 豆豆
生活随笔 收集整理的這篇文章主要介紹了 图解Oracle 12c 触发器实例 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

實例1 級聯(lián)更新

這是Oracle所附帶示例數(shù)據(jù)庫的表,雇員表,包括姓名,薪水,部門編號等列;


這是部門表;這兩個表是外鍵關(guān)聯(lián);


做一個觸發(fā)器,實現(xiàn)級聯(lián)更新;當(dāng)修改部門表的部門編號時,自動更新雇員表相關(guān)列;

CREATE OR REPLACE TRIGGER tr_dept_cou AFTER update OF deptno ON dept FOR EACH ROW BEGINDBMS_OUTPUT.PUT_LINE('舊的deptno值是'||:old.deptno||'、新的deptno值是'||:new.deptno);UPDATE emp SET deptno = :new.deptnoWHERE deptno = :old.deptno; END;


修改以前的部門編號20為2000;看觸發(fā)器是否觸發(fā);


出現(xiàn)上圖錯誤;看部門表的字段信息,deptno列的類型是number(2,0);


改20為82看下情況;


看雇員表,部門編號20已經(jīng)自動更新為82;


這是生成的觸發(fā)器;


那么如何看到DBMS輸出呢;需要在菜單里選擇一下;



實例2?after觸發(fā)器

create or replace trigger emp_trg_raiAfter insert on empFor each rowdeclareBeginDbms_output.put_line('員工姓名:' || :new.ename);Dbms_output.put_line('崗位:' || :new.job);Dbms_output.put_line('工資:' || :new.sal);Dbms_output.put_line('觸發(fā)器已被執(zhí)行');End;

當(dāng)在emp插入數(shù)據(jù)后觸發(fā)器執(zhí)行;


實例3 限制字段值范圍(以薪水為例)

創(chuàng)建序列,創(chuàng)建觸發(fā)器,插入語句,代碼如下;
Create sequence seq_trg_id Increment by 1 Start with 7935 Maxvalue 999999 Minvalue 1 Nocycle nocacheCREATE OR REPLACE TRIGGER trg_add_emp_infoBEFORE INSERTON empFOR EACH ROWDECLARE-- local variables hereBEGINSELECT seq_trg_id.NEXTVAL INTO :NEW.empno FROM dual;IF :NEW.sal < 0 THEN:NEW.sal := 0;ELSIF :NEW.sal > 10000 THEN:NEW.sal := 10000;END IF;END;set serveroutput on; insert into emp(empno,ename,job,mgr,hiredate,sal,comm,deptno) values(seq_trg_id.nextval,'芷若','clerk',7902 ,null,-1100,null,20); insert into emp(empno,ename,job,mgr,hiredate,sal,comm,deptno) values(seq_trg_id.nextval,'敏敏','clerk',7902 ,null,11100,null,20); insert into emp(empno,ename,job,mgr,hiredate,sal,comm,deptno) values(seq_trg_id.nextval,'小昭','clerk',7902 ,null,1200,null,20);

這是創(chuàng)建完成的序列;


插入數(shù)據(jù);

看觸發(fā)器執(zhí)行情況,小昭的薪水正常,芷若的因為小于0而為0,敏敏的因為大于10000而為10000;



總結(jié)

以上是生活随笔為你收集整理的图解Oracle 12c 触发器实例的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。