gpt4 book ai didi

database - 为什么 SQLite 错误 : cannot create INSTEAD OF trigger on table?

转载 作者:IT王子 更新时间:2023-10-29 06:25:17 25 4
gpt4 key购买 nike

我尝试为表的更新创建一个 instead-of 触发器。 instead-of 触发器的正常使用是 View ,但 Sqlite 手册说 instead-of 触发器对表也有效。但我收到错误:无法在表上创建 INSTEAD OF 触发器。我想知道为什么。

我使用外键:

PRAGMA foreign_keys = ON;

我有两张 table 。标识符表:

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;

但它因上述错误而失败,我不明白为什么。

最佳答案

我试过 the source code (搜索“无法创建 INSTEAD OF”),尽管阅读了评论中的链接,其中详细概述了 create trigger 语句,但我会说带有 INSTEAD OF 的触发器仅用于 View ,不能与表格一起使用。

关于database - 为什么 SQLite 错误 : cannot create INSTEAD OF trigger on table?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9487381/

25 4 0