#1064尝试触发sql时出错

问题描述 投票:0回答:2

当我尝试运行应该创建触发器的sql代码时

create trigger userid_to_tokens
after insert on users
as
begin
    insert into tokens
        (token_id)
        select i.user_id
        from users t
        inner join inserted i on t.user_id=i.user_id
end

错误:#1064 - 您的SQL语法出错;查看与您的MariaDB服务器版本对应的手册,以便在'作为开始插入标记(token_id)附近使用正确的语法在第3行选择i.user_id'

triggers mariadb
2个回答
0
投票

as替换for each row,更改分隔符,在MySQL中它是NEW而不是inserted

delimiter //
create trigger userid_to_tokens
after insert on users
for each row
begin
    insert into tokens (token_id) VALUES (NEW.user_id);
end
//
delimiter ;

0
投票

正如关于create trigger的mariadb文档所示,在as关键字之前没有begin关键字。语法错误消息中的引用代码通过使用as ...启动代码摘录来指示此情况。

© www.soinside.com 2019 - 2024. All rights reserved.