我在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
我猜有些事情是不对的,但无法确定它是什么。
答案 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
);