Я пытаюсь создать вместо триггера для обновления таблицы. Обычное использование триггеров вместо триггеров - это представления, но в руководстве по 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;
Но он не работает с выше ошибка, и я не понимаю, почему.