我从this页中发现,last_insert_rowid()
在触发器内时将返回最新的插入内容,但是似乎没有任何方法可以缩小它的范围。
这是我刚刚为当前项目添加的一些工作代码,如果创建的脚本修订版没有分支,它将创建分支并将Revisions.branch_id
设置为该分支的ID。
CREATE TRIGGER revision_insert_branch AFTER INSERT ON Revisions
FOR EACH ROW
WHEN NEW.branch_id = 0
BEGIN
INSERT INTO Branches (script_id) VALUES (NEW.script_id);
UPDATE Revisions SET branch_id = last_insert_rowid() WHERE row_id = NEW.row_id;
END;
我不喜欢这种方式,因为您实际上无法控制它,因此快速浏览一下并不清楚是获取Revision
插入物还是Branches
插入物的ID。
我的问题只是说我还有另一个插入,而无法将查询分为多个部分,我该怎么做?这是一个简单的想法来证明我的意思:
BEGIN
INSERT INTO TableA () VALUES ();
INSERT INTO TableB () VALUES ();
DELETE FROM TableC WHERE unique_a = (
SELECT unique_val FROM TableA WHERE row_id=last_insert_rowid(TableA)
)
AND unique_b = (
SELECT unique_val FROM TableB WHERE row_id=last_insert_rowid(TableB)
)
END;