0

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));

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

我已经用触发器测试了不同的方法,但我还没有找到一种方法来做这两件事,进行更新和中止删除。我可以中止删除(尽管在这种情况下没有必要,因为它是由外键约束强制执行的)或进行更新(尽管删除会删除记录,因此更新无效)

4

1 回答 1

0

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

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

于 2013-09-01T11:59:02.533 回答