我有一张桌子:
项
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
好吧,它对我不起作用。请帮忙。
答案 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