Получение вставленных столбцов строки внутри триггера sqlite3 - PullRequest
0 голосов
/ 22 марта 2019

На этой странице я обнаружил, что last_insert_rowid() будет возвращать последнюю вставку внутри триггера, но, похоже, нет способа сузить ее.

Вотнекоторый рабочий код, который я только что добавил для своего текущего проекта, если ревизия скрипта создается без ветки, она создаст ветку и установит Revisions.branch_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 insert или Branches insert.

Мой вопрос - просто скажите, что яесть еще одна вставка, и нет способа разбить запрос на несколько частей, как бы я это сделал?Вот быстрая идея, чтобы продемонстрировать, что я имею в виду:

    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;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...