用SQLite上的触发器替换DELETE for UPDATE
在SQLite中,是否可以在触发器中进行更新而不是删除? 也就是说,我有两张桌子:用SQLite上的触发器替换DELETE for UPDATE,sqlite,triggers,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)); 当尝试删除作者时,如
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));
当尝试删除作者时,如果有任何引用该作者的注释,我希望更新“临时”字段并中止删除
我已经用触发器测试了不同的方法,但是我没有找到一种方法来完成这两件事,进行更新和中止删除。我可以中止删除(虽然在这种情况下,这是不必要的,因为它是由外键约束强制执行的)或进行更新(虽然删除将删除记录,因此更新无效)只有使用
RAISE
生成错误,才能中止删除,但这将导致任何更新都被回滚
您可以将author
设置为一个视图,并创建多个,而不是将大多数操作传递到基表的触发器。
但是,处理应用程序中的时态逻辑要容易得多。请看一下而不是触发器。我已经看过了,但它们只能应用于视图,不能应用于表。