首页 > 解决方案 > SQL INSERT 不适用于 OUTPUT INSERTED 语句

问题描述

我的目标是在数据库表中插入新行并立即取回插入行的 ID。我在 stackoverflow 上看到了其他一些建议使用此命令的帖子:

INSERT INTO selecttable (name) OUTPUT INSERTED.ID VALUES ('aName')

不幸的是,此命令的执行失败并显示以下错误消息:

您的 SQL 语法有错误;查看与您的 MariaDB 服务器版本相对应的手册,了解在“OUTPUT INSERTED.ID VALUES ('aName')' 附近使用的正确语法

没有输出语句的命令执行效果很好:

INSERT INTO selecttable (name) VALUES ('aName')

你有什么想法,为什么上面的命令不起作用?

标签: sqldbeavermariadb-10.2

解决方案


一般来说,我认为你使用LAST_INSERT_ID()

INSERT INTO selecttable (name)
    VALUES ('aName');

SELECT LAST_INSERT_ID();

这是一个不完美的等效结构。例如,它不适用于多行。但正是 MariaDB/MySQL 解决了这个问题。


推荐阅读