语法错误 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
编辑:我不知道 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 服务器的东西,但除此之外你的语法确实建议 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 ;
当新用户自动注册时,它的 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
编辑:我不知道 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 服务器的东西,但除此之外你的语法确实建议 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 ;