2014-10-08 85 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上进行测试。厌恶地保存了触发器,关闭了程序,然后去吃午餐。回来后觉得我会再试一次。像魅力一样工作。击败我的我们!