我创建了一个触发器,它可以在两个表上工作: - 在表A上插入一个新行(GEDDFILES)时,表B(GEDDIRS)上的数字字段将增加。Oracle触发器不起作用
代码正在编译没有错误,但它不起作用。代码是波纹管:
CREATE OR REPLACE TRIGGER "A"."TRGMAJNRFIC" AFTER
INSERT ON "A"."GEDFILES" FOR EACH ROW DECLARE
wtmpnrfic number;
BEGIN
SELECT MAX(OBJNRFICHIERS) INTO wtmpnrfic from GEDDirs WHERE ID= :new.ID;
UPDATE GEDDirs SET OBJNRFICHIERS = wtmpnrfic+1 WHERE ID=:new.id;
END;
表是从GEDDIRS(字段ID)是FK在表GEDFILES(字段ID)
我不能找出其中的问题,即使是归一化和PK小家伙。
表格GEDFILES的字段OBJNRFICHIERS为空。当我试图增加它的价值时,这可能会成为问题吗?
它看起来像你试图维护一个表中的“记录数”。您应该认识到,在并发会话存在的情况下,对于相同的'GEDDirs.ID',将新行添加到'GEDFILES'时不起作用。 “OBJNRFICHIERS”中的数据可能会变成垃圾。 – 2010-07-16 13:01:43
是的,你是对的!我该如何解决这个问题?你能提供一个替代解决方案吗? 最好的问候, – RBA 2010-07-16 15:05:21
添加DBMS_OUTPUT.PUT_LINE('tirgger works');为您的触发器并连接到dmbs输出。 – deathangel908 2016-02-16 10:38:32