2017-06-04 99 views
-1

我已經建立了一個數據庫表2(t_top和t_rest),並首先應該包含多達5個號碼,而第二個應該包含更多。我們只能使用一個活動觸發器將數字插入到t_top中,該活動觸發器將5個數字保存到t_top,然後如果插入了第六個數字,那麼如果它在t_top中大於1,則第六個插入到t_top中,而第五個數字中存在最小值移動到t_rest。觸發的SQLite不工作

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 

我想的東西是不對,但想不通這是什麼。

回答

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 
); 
+0

這看起來更好,但我得到一個「聚集的濫用:MAX() 」。不知道爲什麼 –

+0

嘗試這個編輯(小心點,如果你知道該怎麼做,就去做) –