使用UPSERT进行Sqlite3触发

时间:2017-09-25 01:40:43

标签: sql sqlite triggers

我在我的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

任何人都可以指示我做错了吗?

谢谢!

1 个答案:

答案 0 :(得分:0)

可以访问导致触发器触发的行的值,但是'table'is called NEW

INSERT ... VALUES(NEW.Date, (SELECT SUM... WHERE Date = NEW.Date));