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