触发SQLite无法正常工作

时间:2017-06-04 16:09:00

标签: sqlite triggers

我在db上构建了2个表(t_top和t_rest),第一个应该包含最多5个数字,而第二个应该包含更多。我们只能使用一个活动触发器向t_top插入数字,该活动触发器将5个数字保存到t_top,然后如果插入第六个,那么如果它在t_top中大于1,则第六个插入t_top而最小值插入t_top其中存在的5个移动到t_rest。

F.e。如果我们有t_top = [1,3,5,7,9}并且t_rest为空,那么如果我们插入8,我们最终得到t_top = [3,5,7,8,9]和t_rest = [1]。那个触发器对我有用。

但是,我已经写了另一个触发器,如果​​从t_top删除,它应该移动数字。如果是f.e.我们删除5,我们应该将1移回t_top。

我的触发器如下,但不起作用:

CREATE TRIGGER tracks_less_than_5
AFTER DELETE on t_top
WHEN
5>(SELECT COUNT(*) FROM t_top)
BEGIN
INSERT INTO t_top
SELECT MAX(id) AS max_id FROM t_min
WHERE id = max_id;
DELETE FROM t_min
SELECT MAX(id) AS max_id FROM t_min
WHERE id = max_id;
END

我猜有些事情是不对的,但无法确定它是什么。

1 个答案:

答案 0 :(得分:2)

DELETE FROM t_min
SELECT MAX(id) AS max_id FROM t_min
WHERE id = max_id;

- 这没有意义,因为DELETE的语法是DELETE FROM table WHERE ...我想你想要这样的东西:

DELETE FROM t_min WHERE id=(
SELECT MAX(id) FROM t_min
);