2014-03-31 98 views
-1

當我創建此觸發器時,表中的插入器插入不再起作用。觸發器中止插入

CREATE DEFINER=`root`@`localhost` TRIGGER `premium` AFTER INSERT ON `recensione` FOR EACH ROW BEGIN 
DECLARE n INT; 
DECLARE g VARCHAR(255); 
SET n = (SELECT COUNT(*) FROM recensione WHERE id_autore=NEW.id_autore); 
SET g = (SELECT gruppo FROM utente WHERE id=NEW.id_autore); 
IF (n >= 20 AND g != `Amministratore`) THEN 
UPDATE utente AS u SET u.gruppo=`Premium` WHERE u.id=NEW.id_autore; 
END IF; 
END 

回答

1

感謝您對當前工作的狀態報告。我不確定你是否在問一個問題,但如果你是這樣的話,這條線看起來是錯誤的。

IF (n >= 20 AND g != `Amministratore`) THEN 
        ^   ^

它看起來像你想的局部變量g的內容與文字值進行比較,但一個字面值用單引號,而不是反引號。反引號用於標識符(表名,列名等)

IF (n >= 20 AND g != 'Amministratore') THEN 
        ^   ^

同去的這條線:

UPDATE utente AS u SET u.gruppo=`Premium` WHERE u.id=NEW.id_autore; 
           ^ ^

看起來像你想的列設置爲文本值,而不是utente表中另一列的值。

UPDATE utente AS u SET u.gruppo='Premium' WHERE u.id=NEW.id_autore; 
           ^ ^
+0

非常感謝。對不起,我的英語不好! – user3482682