t1中的当前行
id,f1,f2,f3
1,'01','02','03'
2,'11','12','13'
4,'41','42','43'其中,f1是唯一的密钥字段。
现在我们执行以下查询:
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。
还有其他方法可以做到这一点吗?
发布于 2022-03-29 23:23:01
您可以在MySql中对插入后和更新后的事件使用触发器。在触发器正文中,您将获得可以用于在另一个表中插入、更新或删除的旧值和新值。MySQL文档链接:https://dev.mysql.com/doc/refman/8.0/en/trigger-syntax.html
https://stackoverflow.com/questions/31559740
复制相似问题