2012-11-29 50 views
0

我對MySQL不太瞭解,但我試圖創建一個觸發器,以便每當插入行時,如果表中的行總數大於10,則刪除某個行。根據行數執行查詢?

我在尋找什麼,沒有觸發的語法,是這樣的:

IF (SELECT COUNT(*) FROM table) > 10 THEN 
//do some stuff 
END IF; 

但是似乎並沒有被接受的語法。我應該如何去做這件事?

回答

0
DELIMITER && 

CREATE TRIGGER trigger_name AFTER INSERT ON table_name FOR EACH ROW 

BEGIN 

DECLARE x INT; 
SET x = (SELECT count(*) FROM table_name); 

IF x > 10 THEN 

    DELETE FROM table_name where condition; 

END IF; 

END&& 

DELIMITER ; 
+0

使我有以下錯誤:#1064 - 你在你的SQL語法錯誤;檢查對應於你的MySQL服務器版本使用「」附近before_insert_wall「BEFORE INSERT ON‘牆’每一行的正確的語法手冊 BEGIN x聲明」在1號線 – styke

+0

不要在觸發器名使用引號。順便說一下,有關更多詳細信息,請查看http://dev.mysql.com/doc/refman/5.0/en/create-trigger.html – bhuang3

+0

不,仍然顯示錯誤。 – styke

-1
select count(1) into @cnt from table; 
if (@cnt > 10) then 
    // do some stuff 
end if; 

,而不是@cnt可以用過聲明的變量