2014-03-31 94 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