cev*_*ing 6 database sqlite triggers
我尝试为表上的更新创建一个替代触发器.正常使用的替代触发器是视图,但Sqlite手册说,替代触发器对表也有效.但我得到错误:无法在表上创建INSTEAD OF触发器.我想知道为什么.
我用外键:
PRAGMA foreign_keys = ON;
Run Code Online (Sandbox Code Playgroud)
我有两张桌子.标识符表:
CREATE TABLE id
(
id INTEGER PRIMARY KEY AUTOINCREMENT,
created REAL NOT NULL DEFAULT CURRENT_TIMESTAMP
);
Run Code Online (Sandbox Code Playgroud)
以及一个引用标识符的表:
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)
);
Run Code Online (Sandbox Code Playgroud)
插入工作正常:
INSERT INTO id DEFAULT VALUES;
INSERT INTO person (login) VALUES ('root');
SELECT * FROM person;
1|root|||||2012-02-28 18:03:45
Run Code Online (Sandbox Code Playgroud)
现在我想定义以下触发器,它将更新转换为插入:
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;
Run Code Online (Sandbox Code Playgroud)
但它失败了上述错误,我不明白为什么.
| 归档时间: |
|
| 查看次数: |
4396 次 |
| 最近记录: |