错误#1193 mysql,插入触发器

carvr3hs  于 2021-06-20  发布在  Mysql
关注(0)|答案(1)|浏览(239)
CREATE TRIGGER `UpdateId` 
BEFORE INSERT ON `comments`
FOR EACH ROW
set @vid=(select MAX(comments.id) from comments)+1; 
set new.id=@vid;

这个查询给我一个错误#1193说id变量未知。
似乎有类似问题的每个人都没有将“new”子句放在变量之前,但在我的例子中,它仍然不起作用。“new”子句在我键入时没有突出显示,它看起来不是一个特殊的关键字,而是一个普通的单词。

f45qwnt8

f45qwnt81#

从https://dev.mysql.com/doc/refman/8.0/en/trigger-syntax.html,看起来您可能需要只使用一个 set 陈述或使用 begin ... end 构造。我的预感是 create trigger 语句在第一个分号处结束,然后mysql在到达时不知道您在说什么 new.id=@vid; .

CREATE TRIGGER `UpdateId` 
BEFORE INSERT ON `comments`
FOR EACH ROW
set 
    @vid=(select MAX(comments.id) from comments)+1, 
    new.id=@vid;

或者

delimiter //
CREATE TRIGGER `UpdateId` 
BEFORE INSERT ON `comments`
FOR EACH ROW
begin
    set @vid=(select MAX(comments.id) from comments)+1; 
    set new.id=@vid;
end;//
delimiter;

相关问题