sql - 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')
你有什么想法,为什么上面的命令不起作用?
解决方案
一般来说,我认为你使用LAST_INSERT_ID()
:
INSERT INTO selecttable (name)
VALUES ('aName');
SELECT LAST_INSERT_ID();
这是一个不完美的等效结构。例如,它不适用于多行。但正是 MariaDB/MySQL 解决了这个问题。
推荐阅读
- python - 按类名搜索和替换 HTML 标记并替换为非 HTML 标记
- javascript - 访问数组项并找到它们的长度
- laravel - 如何在数据上添加功能以添加图像
- ios - 我们可以限制 NSMutableAttributedString 的宽度吗?
- javascript - Angular Material 10 范围 datepicker 和 moment.js 错误:date.getFullYear 不是函数
- sql - SQL 中的四舍五入小数
- apache-spark - 在 Spark 中使用未知数量的集群进行聚类
- node.js - electron:electron-forge 打包在 Windows 上失败,但在 macOS 上有效
- animation - 我可以在 echarts 中设置不同类型的加载动画吗
- r - Bookdown:仅生成 PDF,不生成 HTML