ORACLE觸發器增刪改(一張表增刪改另一張表)

今天弄ORACLE觸發器一張表增刪改另一張表遇到了很多問題,百度一大堆全不是我想要的完美。

首先貼出我參考過覺得比較好的博文:

https://www.cnblogs.com/zjfjava/p/9155171.html         這篇博文主要覺得他說的 IF UPDATING(字段) THEN XXXXX END IF;很有用;

https://blog.csdn.net/bk_huangzongbo/article/details/78470341        這篇博文主要覺得他說的UPDATE先查詢定義一個是否有數據來控制做判斷很有用

------------------------   而關於我這個的那篇博文找不到了...

下面我直接貼出我花了一兩個小時折騰出來的觸發器SQL:

CREATE OR REPLACE TRIGGER YT_STORAGE_URD
AFTER INSERT OR UPDATE OR DELETE ON "HW"."SUBJECTINFO"
FOR EACH ROW
declare
   -- local variables here
BEGIN
   IF INSERTING THEN
      INSERT INTO SC.SUBJECTINFO
      (SUBJECTID,MEETID,SUBJECTNAME,SUBJECTSHORTNAME,DISCUSSDATE,MORINGAFTERNOO,SORTNO,REMARK,OPERUSERID,OPERDATE,MODIFYUSERID,MODIFYDATE)
      VALUES(:NEW.ID,:NEW.MEETID,:NEW.SUBJECTNAME,:NEW.SUBJECTSHORTNAME,:NEW.DISCUSSDATE,:NEW.MORINGAFTERNOO,:NEW.SORTNO,'SCHY數據','1',NOW(),'1',NOW());
   ELSIF DELETING THEN
     DELETE FROM SC.SUBJECTINFO WHERE SUBJECTID=:OLD.ID;
   ELSE
      UPDATE SC.SUBJECTINFO SET MEETID=:NEW.MEETID, SUBJECTNAME=:NEW.SUBJECTNAME, SUBJECTSHORTNAME=:NEW.SUBJECTSHORTNAME,
      DISCUSSDATE=:NEW.DISCUSSDATE, MORINGAFTERNOO=:NEW.MORINGAFTERNOO, SORTNO=:NEW.SORTNO,
      MODIFYDATE=:NEW.MODIFYDATE WHERE SUBJECTID=:OLD.ID;
   END IF;
END YT_STORAGE_URD;

當大神看到小弟這個觸發器,可能會噴咋這麼菜,這麼簡單的觸發器竟然弄MD一兩個小時,O(∩_∩)O哈哈~

總結:

            我想要的其實並不是這樣的,當想想如果A表更新的數據在B表沒有怎麼辦?再想想若A表更新的字段是否需要檢查這個字段是否更新纔去更新B表字段呢?再想想若A表刪除的數據沒得但是B表存在呢?A表刪除的數據B表沒有呢?觸發器會不會出現異常之內的?一系列問題都等待着去驗證...

            原本這個觸發器是三個觸發器,是我看了IF ELSIF之後合併的。

大俠,來到此處請留下你美好的建議吧(#^.^#)

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章