当我创建此触发器时,表格中的插入物不再起作用。
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
答案 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;
^ ^