错误 #1193 MySql,插入触发器
Posted
技术标签:
【中文标题】错误 #1193 MySql,插入触发器【英文标题】:Error #1193 MySql, insert trigger 【发布时间】:2019-01-02 03:55:53 【问题描述】: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 变量是未知的。
似乎有类似问题的每个人都没有将“新”clausole 放在变量之前,但在我的情况下它仍然不起作用。 'new' clausole 在我输入时没有突出显示,看起来它不是一个特殊的关键字,而是一个普通的单词。
【问题讨论】:
【参考方案1】:从https://dev.mysql.com/doc/refman/8.0/en/trigger-syntax.html 看来,您可能只需要使用一个set
语句或使用begin ... end
构造。我的预感是create trigger
语句以第一个分号结束,然后当它到达new.id=@vid;
时,MySQL 不知道你在说什么。
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;
【讨论】:
以上是关于错误 #1193 MySql,插入触发器的主要内容,如果未能解决你的问题,请参考以下文章
使用“之前”触发器插入后的 MySQL PDO LastInsertID 返回错误值