错误#1193 MySql,插入触发器

时间:2018-07-25 10:48:11

标签: mysql triggers phpmyadmin

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单词,而是一个普通单词。

1 个答案:

答案 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;