Почему ошибка Sqlite: не удается создать триггер INSTEAD OF для таблицы?

Я пытаюсь создать вместо триггера для обновления таблицы. Обычное использование триггеров вместо триггеров - это представления, но в руководстве по Sqlite сказано, что триггеры вместо триггеров также действительны для таблиц. Но я получаю сообщение об ошибке: не может создать триггер INSTEAD OF для таблицы . И мне интересно, почему.

Я использую внешние ключи:

PRAGMA foreign_keys = ON;

И у меня есть две таблицы. Таблица идентификаторов:

CREATE TABLE id
(
    id      INTEGER PRIMARY KEY AUTOINCREMENT,
    created REAL    NOT NULL DEFAULT CURRENT_TIMESTAMP
);

И таблица, которая ссылается на идентификаторы:

CREATE TABLE person
(
    id        INTEGER NOT NULL DEFAULT (last_insert_rowid()) REFERENCES id,
    login     TEXT,
    password  TEXT,
    firstname TEXT,
    lastname  TEXT,
    email     TEXT,
    created   REAL  NOT NULL DEFAULT CURRENT_TIMESTAMP,
    PRIMARY KEY (id, created)
);

Insert работает нормально:

INSERT INTO id DEFAULT VALUES;
INSERT INTO person (login) VALUES ('root');
SELECT * FROM person;
1|root|||||2012-02-28 18:03:45

Теперь я хочу определить следующий триггер, который преобразует обновление во вставку:

CREATE TRIGGER person_update INSTEAD OF UPDATE OF login, password, firstname, lastname, email ON person
BEGIN
    INSERT INTO person (login, password, firstname, lastname, email)
    VALUES (new.login, new.password, new.firstname, new.lastname, new.email);
END;

Но он не работает с выше ошибка, и я не понимаю, почему.

6
задан ceving 29 February 2012 в 09:47
поделиться