我在我的Rails项目中使用sqlite3,我需要创建一个触发器,在更新另一个引用表时自动插入到表中。 例如,我有2个表细分和总计,每个表的模式如下所示。 的击穿
Date TEXT NOT NULL,
Amount DECIMAL NOT NULL
总
Date TEXT NOT NULL,
Daily_Total DECIMAL NOT NULL,
FOREIGN KEY (Date) REFERENCES Breakdown(Date)
然后,下面是我的触发器创建。
CREATE TRIGGER update_sum AFTER INSERT ON Breakdown
...> BEGIN
...> INSERT OR REPLACE INTO Total (Date, Daily_Total)
...> VALUES (Breakdown.Date,
...> (SELECT SUM(Amount) FROM Breakdown WHERE Date = Total.Date));
...> END;
所以,我的想法是当我以**INSERT INTO Breakdown VALUES (Date('now'),19.99);**
插入细分表时,总计表会通过插入或更新来更新。
然而,当我插入Breakdown表时,我收到一条错误消息错误:没有这样的列:Breakdown.Date
任何人都可以指示我做错了吗?
谢谢!
答案 0 :(得分:0)
你可以访问导致触发器触发的行的值,但是'table'is called NEW
:
INSERT ... VALUES(NEW.Date, (SELECT SUM... WHERE Date = NEW.Date));