触发中止插入

时间:2014-03-31 22:09:47

标签: mysql triggers

当我创建此触发器时,表格中的插入物不再起作用。

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 个答案:

答案 0 :(得分: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;
                                ^       ^