2014-12-02 186 views
0

我想創建一個觸發器,它刪除任何新行我插入如果該值比數多後刪除,例如8創建觸發器插入

我嘗試這樣做:

DELIMITER | 
CREATE TRIGGER mytrigger AFTER INSERT ON mytab 
    FOR EACH ROW 
    BEGIN 
     DELETE FROM mytab WHERE myparameter > 8; 
    END 
| 

DELIMITER ; 

我想:

INSERT INTO mytab VALUES (9); 

,這是消息錯誤:

#1442 - Can't update table 'mytab' in stored function/trigger because it is already used by statement which invoked this stored function/trigger. 

也是,如果我把:

INSERT INTO mytab VALUES (4); 

它運行同樣的錯誤......

謝謝!

+0

您無法在運行觸發器的同一張表上插入/更新/刪除。 – 2014-12-02 17:47:21

+0

出了什麼問題?您需要提供更多信息:錯誤消息將是一個好的開始。 – 2014-12-02 17:47:21

回答

1

不要刪除!只是在插入時產生錯誤:

DELIMITER | 
CREATE TRIGGER mytrigger BEFORE INSERT ON mytab 
    FOR EACH ROW 
    BEGIN 
     IF new.myparameter > 8 THEN 
      signal sqlstate '45000' set message_text = 'Parameter value can be no larger than 8'; 
     END IF; 
    END 
| 

DELIMITER ; 
+0

你還沒有刪除刪除行:P謝謝戈登! – paco666 2014-12-02 18:40:49