在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));
当尝试删除作者并且有任何评论引用该作者时我想更新“时间”字段并中止删除。
我已经使用触发器测试了不同的方法,但我还没有找到办法完成这两件事,进行更新并中止删除。我可以中止删除(虽然在这种情况下它没有必要,因为它是由外键约束强制执行)或进行更新(虽然删除将删除记录,因此更新没有效果)
答案 0 :(得分:0)
只有使用RAISE
生成错误才能中止删除,但这会导致任何UPDATE
被回滚。
您可以使author
视图并创建多个INSTEAD OF
触发器,这些触发器将大多数操作传递到基表。
但是,在应用程序中处理temporal
逻辑要容易得多。