gpt4 book ai didi

sql - 无法在 SQLite3 中创建触发器

转载 作者:行者123 更新时间:2023-12-03 17:49:55 26 4
gpt4 key购买 nike

我在 sqlite3 中创建这个触发器 second_loop 时遇到问题:
它是更多代码的一部分,但正是这个部分给出了错误。
当我在数据库上执行代码时,我得到以下信息:在“CREATE”附近:语法错误 .

我确信触发器内部的部件运行良好,因为我已经单独对其进行了测试,但是这一定存在其他类型的问题。

请注意,我在同一个 SQL 中有另一个触发器,它工作得很好!

请指教,谢谢

CREATE TRIGGER second_loop AFTER UPDATE OF stack_count ON global WHEN NEW.stack_count<>0

BEGIN
CREATE TEMP TABLE last_row(id INTEGER PRIMARY KEY, unvisited INTEGER DEFAULT 1, predecessor INTEGER DEFAULT 0, discovery INTEGER DEFAULT 0, finish INTEGER DEFAULT 0);

INSERT INTO last_row
SELECT *
FROM nodes
WHERE id = (SELECT node_id
FROM stack
ORDER BY oid DESC LIMIT 1);

UPDATE last_row SET unvisited =0, predecessor = (SELECT parent_id FROM global), discovery = (SELECT time FROM global);

UPDATE global SET current_id = (SELECT node_id FROM stack WHERE ROWID = (SELECT MAX(ROWID) FROM stack));
UPDATE global SET time = time + 1;

DELETE FROM stack WHERE ROWID = (SELECT MAX(ROWID));

INSERT INTO stack(node_id)
SELECT DISTINCT edges.target_id
FROM nodes, edges, global
WHERE edges.source_id=global.current_id AND nodes.unvisited=1;

-- update stack count to go to second_loop trigger
UPDATE global SET stack_count = stack_count + 1;
END;

最佳答案

SQLite3 的 CREATE TRIGGER statement不支持嵌入式 CREATE TEMP TABLE子报表根据 syntax diagram .

关于sql - 无法在 SQLite3 中创建触发器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12162162/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com