用SQLite上的触发器替换DELETE for UPDATE

时间:2013-09-01 10:25:32

标签: sqlite triggers

在SQLite中是否可以在触发器中进行更新而不是删除? 即,我有两张桌子:

CREATE TABLE author (authorid INTEGER PRIMARY KEY, temporal NUMERIC);
CREATE TABLE comment (id INTEGER PRIMARY KEY, text TEXT, authorid INTEGER, FOREIGN KEY(authorid) REFERENCES author(authorid));

当尝试删除作者并且有任何评论引用该作者时我想更新“时间”字段并中止删除。

我已经使用触发器测试了不同的方法,但我还没有找到办法完成这两件事,进行更新并中止删除。我可以中止删除(虽然在这种情况下它没有必要,因为它是由外键约束强制执行)或进行更新(虽然删除将删除记录,因此更新没有效果)

1 个答案:

答案 0 :(得分:0)

只有使用RAISE生成错误才能中止删除,但这会导致任何UPDATE被回滚。

您可以使author视图并创建多个INSTEAD OF触发器,这些触发器将大多数操作传递到基表。 但是,在应用程序中处理temporal逻辑要容易得多。