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'clausole放在变量之前,但是在我看来,它仍然行不通。键入时,“新”的clausole不会突出显示,它看起来不是一个特殊的keyn单词,而是一个普通单词。
答案 0 :(得分:0)
在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;
OR
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;