我尝试为表格更新创建一个代替触发器。代替触发器的正常用途是视图,但 Sqlite 手册表示代替触发器也适用于表格。但我收到错误消息:无法在表格上创建代替触发器。我想知道原因。
我使用外键:
现在我想定义以下触发器,将更新转换为插入操作:
但是它失败了,并出现了上述错误,我不明白为什么。
我使用外键:
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;
但是它失败了,并出现了上述错误,我不明白为什么。