首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >检索所有LAST_INSERT_ID of MySQL批处理插入.重复更新.?

检索所有LAST_INSERT_ID of MySQL批处理插入.重复更新.?
EN

Stack Overflow用户
提问于 2015-07-22 09:53:39
回答 1查看 1.7K关注 0票数 10

t1中的当前行

代码语言:javascript
复制
id,f1,f2,f3
1,'01','02','03'
2,'11','12','13'
4,'41','42','43'

其中,f1是唯一的密钥字段。

现在我们执行以下查询:

代码语言:javascript
复制
INSERT INTO `t1` (`f1`, `f2`, `f3`) VALUES 
('11', '12', '13'),
('21', '22', '23'),
('31', '32', '33'),
('41', '42', '43'),
('51', '52', '53')
ON DUPLICATE KEY UPDATE id = LAST_INSERT_ID(id)

如何获得插入/更新的所有行的最后插入ID?

对于上面的例子,我相信ID应该是:

2 5 6 4 7

对吗?

但是,在进行了批量插入查询之后,如何从MySQL获得它们,其中包含了像这样的重复密钥更新子句?

this answer中,LAST_INSERT_ID“给出了插入在最后一批中的第一行的id”,如果行都是新插入的,那么就可以以顺序的方式获得所有其余的id。

显然,当我们有重复的密钥更新,这是一个完全不同的故事。那么,是否有任何方法可以获得批量插入的所有最后插入is,并在重复密钥更新时使用?试过谷歌,但没有发现有任何帮助。

为什么我需要这个

插入t1后,我需要将刚刚插入的行与t2中的一行关联起来。这是一种多到多的关系,因此我需要在t1_x_t2中插入t2行的ID以及刚刚插入到t1中的所有ID。

还有其他方法可以做到这一点吗?

EN

回答 1

Stack Overflow用户

发布于 2022-03-29 23:23:01

您可以在MySql中对插入后和更新后的事件使用触发器。在触发器正文中,您将获得可以用于在另一个表中插入、更新或删除的旧值和新值。MySQL文档链接:https://dev.mysql.com/doc/refman/8.0/en/trigger-syntax.html

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31559740

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档