Mysql 触发器中止插入
当我创建这个触发器时,表Recension中的插入不再起作用Mysql 触发器中止插入,mysql,triggers,Mysql,Triggers,当我创建这个触发器时,表Recension中的插入不再起作用 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 =
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
感谢您提供关于您当前工作的状态报告。我不确定你是否在问问题,但如果你是,这句话看起来是错的
IF (n >= 20 AND g != `Amministratore`) THEN
^ ^
看起来您希望将局部变量g
的内容与文字值进行比较,但文字值包含在单引号中,而不是反引号中。反勾号用于标识符(表名、列名等)
这一行也是如此:
UPDATE utente AS u SET u.gruppo=`Premium` WHERE u.id=NEW.id_autore;
^ ^
看起来您希望将该列设置为文字值,而不是utete
表中另一列的值
UPDATE utente AS u SET u.gruppo='Premium' WHERE u.id=NEW.id_autore;
^ ^
非常感谢你。对不起,我的英语不好!
UPDATE utente AS u SET u.gruppo='Premium' WHERE u.id=NEW.id_autore;
^ ^