2014-10-08 81 views
0

我有兩個表。一個是扣除,另一個是扣除TransTrans。 idDeductions是扣除中的關鍵字段,它是deductTrans中的外鍵。插入deductTrans時,我想要自動扣除幾件事情。我有這個編譯的觸發器。的SQLite沒有找到場觸發

CREATE TRIGGER trig_DeductTrans AFTER INSERT ON DeductTrans 
    BEGIN 
     UPDATE Deductions 
    SET remainingCt = remainingCT - 1 
    WHERE 
     idDeductions = New.idDeductions ; 
    END; 

當我插入一條記錄,我收到以下錯誤:「沒有這樣的列idDeductions」

我不知所措。我已經嘗試將WHERE更改爲Deductions.idDeductions = New.idDeductions,但它無濟於事。有任何想法嗎?

+0

顯示兩個表的定義。 – 2014-10-08 18:36:54

回答

0

的SQLite聲稱,Deductions表中有沒有名爲「idDeductions」列。你沒有給我們任何檢查手段,但最有可能的是正確的。我注意到,您的觸發器在不同的表(DeductTrans),這顯然你希望也有一個列idDeductions

最有可能在Deductions相應的列命名不同。例如,它可能只是簡單地命名爲id

+0

我希望是。這將解釋很多,但這是創建代碼的第一部分:CREATE TABLE「扣除」( 「idDeductions」TEXT NOT NULL,.... – Gary 2014-10-08 17:36:25

+0

因此,它可能是'DeductTrans'具有不同名稱的列?或者作爲一個瘋狂的猜測,當這個觸發器失敗時,是否可能沒有爲'DeductTrans.idDeductions'插入明確的值?(我懷疑它應該失敗,如果你不這樣做,但是軟件有錯誤。 ) – 2014-10-08 17:54:43

0

確定。離奇。我正在Navicat Premium上進行測試。厭惡地保存了觸發器,關閉了程序,然後去吃午餐。回來後覺得我會再試一次。像魅力一樣工作。擊敗我的我們!