gpt4 book ai didi

mysql - 如何创建一个返回插入行的插入过程

转载 作者:行者123 更新时间:2023-11-29 02:10:48 25 4
gpt4 key购买 nike

这是我当前的 SQL:

CREATE PROCEDURE addBlog(@title VARCHAR(255), @body VARCHAR(255), OUT @uuid INT) BEGIN
INSERT INTO blogs b (b.title, b.detail) VALUES (@title, @body);
SELECT LAST_INSERT_ID() INTO @uuid;
SELECT @uuid;
END

抛出此错误(直接从 SQL 导出):

1064 - You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near '@title VARCHAR(255), @body VARCHAR(255), OUT @uuid INT) BEGIN INSERT INTO blog' at line 1

我的数据库在 uuid INT (255) 上有一个 AUTO_INCREMENT PRIMARY KEY,我想使用此过程返回它。任何帮助都会很棒。

我的表格是这样的:

CREATE TABLE `blogs` (
`uuid` int(255) NOT NULL,
`title` varchar(1024) NOT NULL,
`detail` varchar(1024) NOT NULL,
`user_id` int(255) NOT NULL,
`created` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

ALTER TABLE `blogs`
ADD PRIMARY KEY (`uuid`),
ADD KEY `user_id` (`user_id`);

ALTER TABLE `blogs`
MODIFY `uuid` int(255) NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=3;

ALTER TABLE `blogs`
ADD CONSTRAINT `blogs_ibfk_1` FOREIGN KEY (`user_id`) REFERENCES `users`
(`uuid`) ON DELETE NO ACTION ON UPDATE NO ACTION;

更新的 SQL:

CREATE PROCEDURE addBlog(
IN in_title VARCHAR(255),
IN in_body VARCHAR(255),
IN in_user INT(255),
OUT out_uuid INT
) BEGIN
INSERT INTO `blogs` (`title`, `detail`, `user_id`) VALUES (in_title, in_body, in_user);
SELECT LAST_INSERT_ID() INTO out_uuid;
SELECT out_uuid;
END;

最佳答案

您缺少参数类型定义,例如 INOUT 等。此外,我认为您不需要使用 @,在参数定义中。

此外,我想确保存储过程/触发器等中的变量/参数的名称与其中使用的任何表/列名称不同。

此外,如果您还没有这样做,则需要将 Delimiter 重新定义为 ; 以外的其他内容(如 $$);并将其重新定义回 ; 最后。

DELIMITER $$ -- define the delimiter

CREATE PROCEDURE addBlog(IN title_in VARCHAR(255), -- added suffix "in" to param name
IN body_in VARCHAR(255),
OUT uuid_out INT) BEGIN
......

END $$ -- end of stored procedure
DELIMITER ; -- redefine delimiter back to ;

关于mysql - 如何创建一个返回插入行的插入过程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53141303/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com