语法错误Mysql
当新用户自动注册时,其permissionID将为1。就这么简单,但是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
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 ;
在
创建触发器
之前是否有分隔符
语句?您是否有一个名为“插入的表”
?这看起来可疑。在创建触发器
之前是否有分隔符
语句?您是否有一个名为“插入的表”
?这看起来可疑。