Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/61.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
语法错误Mysql_Mysql_Syntax Error - Fatal编程技术网

语法错误Mysql

语法错误Mysql,mysql,syntax-error,Mysql,Syntax Error,当新用户自动注册时,其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`,`pe

当新用户自动注册时,其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 
EDIT:我不知道
DELIMETER
NEW
而不是
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 Server的,但在其他方面,您的语法确实建议使用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 ;

inserted
是来自SQL Server的,但在其他方面,您的语法确实建议使用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-无法声明会话变量(从@开始)。您可以直接为其设置值

3-MySQL中没有触发临时插入数据的插入表。您可以使用
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 ;

由于以下原因,出现语法错误:

1-缺少分隔符

2-无法声明会话变量(从@开始)。您可以直接为其设置值

3-MySQL中没有触发临时插入数据的插入表。您可以使用
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 ;

创建触发器
之前是否有
分隔符
语句?您是否有一个名为“插入的
表”
?这看起来可疑。在
创建触发器
之前是否有
分隔符
语句?您是否有一个名为“插入的
表”
?这看起来可疑。