语法错误 Mysql

Syntax Error Mysql

当新用户自动注册时,它的 permissionID 将是 1。就这么简单,但是 mysql 语法错误让我很痛苦。请帮忙

CREATE TRIGGER `user_default_role` 
AFTER INSERT ON `users`
FOR EACH ROW
BEGIN
DECLARE @userID int;
SET @userID = (SELECT userID FROM inserted LIMIT 1);
INSERT INTO `user_permission` (`userID`,`permissionID`,`created_at`,`updated_at`) VALUES (@userID,1 ,NOW(),null);
END

这是错误:

#1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '@userID int' at line 5 

编辑:我不知道 DELIMETERNEW 而不是 inserted。感谢所有这么快回复的人。这是更新后的代码:

DELIMITER $$
CREATE TRIGGER `user_default_role` AFTER INSERT ON `users`
FOR EACH ROW
BEGIN
    INSERT INTO `user_permission` (`userID`, `permissionID`, `created_at`, `updated_at`)
        VALUES (new.userID, 1, NOW(), null);
END;$$
DELIMITER ;

inserted 是来自 SQL 服务器的东西,但除此之外你的语法确实建议 MySQL。这可能对你有用:

DELIMITER $$

CREATE TRIGGER `user_default_role` AFTER INSERT ON `users`
FOR EACH ROW
BEGIN
    INSERT INTO `user_permission` (`userID`, `permissionID`, `created_at`, `updated_at`)
        VALUES (new.userId, 1, NOW(), null);
END;$$

DELIMITER ;

您遇到语法错误,原因如下:

1- 缺少分隔符。

2-会话变量(@开始)不能declared.you可以直接给它们赋值

3- MySQL 中没有插入的 table 触发临时插入 data.You 可以使用 NEW.

访问插入的值
DELIMITER $$
CREATE TRIGGER `user_default_role` 
AFTER INSERT ON `users`
 FOR EACH ROW
    BEGIN
    SET @userID =NEW.userID;
    INSERT INTO `user_permission` (`userID`,`permissionID`,`created_at`,`updated_at`) VALUES (@userID,1 ,NOW(),null);
   END$$
DELIMITER ;