触发自动将记录添加到另一个表

时间:2011-11-12 14:21:36

标签: ios sqlite

我有一张桌子:

itemID int autoincrement
itemName text

itemAvailability

itemID       integer REFERENCES Items (itemID)
availability integer DEFAULT 0

我需要触发器来执行:

当用户将记录添加到Items表中时,触发器必须自动将记录添加到itemAvailability表中。

itemAvailability.itemID = Items.itemID

在那一刻,我来到这一点并坚持:

CREATE TRIGGER updateItemsAvailabilityTbl AFTER INSERT ON items
BEGIN
INSERT INTO itemAvailability (itemID)
VALUES (items.itemID)
END
好吧,它对我不起作用。请帮忙。

1 个答案:

答案 0 :(得分:1)

您的CREATE TRIGGER语句中有两个错误。 1.正如documentation

中所写的那样
  

触发器操作可以访问正在插入,删除的行的元素   或使用表格" NEW.column-name"的引用更新和   " OLD.column-name",其中column-name是来自的列的名称   与触发器关联的表。   OLD和NEW引用只能用于事件触发器   它们是相关的,如下:

     

INSERT NEW引用有效

     

更新新旧参考有效

     

DELETE OLD引用有效

所以你应该写new.itemID而不是items.itemID。 2. INSERT INTO语句应以分号结束。试试这个:

CREATE TRIGGER updateItemsAvailabilityTbl AFTER INSERT ON items
BEGIN
INSERT INTO itemAvailability (itemID)
VALUES (new.itemID);
END