在sqlite3触发器中获取插入的行列

时间:2019-03-22 12:26:36

标签: sqlite triggers

我从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;

0 个答案:

没有答案