我創建了一個觸發器,它可以在兩個表上工作: - 在表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