今天弄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之后合并的。
大侠,来到此处请留下你美好的建议吧(#^.^#)
版权声明:本文为qq_20696007原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。