gpt4 book ai didi

php - 使用单个查询插入多行时获取所有插入的 ID

转载 作者:IT王子 更新时间:2023-10-29 00:28:39 24 4
gpt4 key购买 nike

我已经看过其他答案,但我仍然觉得我的问题是相关的,值得单独输入。

我有一个名为 settings 的表(它存储用户设置),我必须为每个用户插入多个设置。最初,我为每个设置执行了单独的插入语句,但觉得这不是一个特别好的方法,我想通过同一个插入语句插入多行。我唯一的问题是我想要每个新插入的行的 auto_incremented ID。

我已经阅读了说这是不可能/可扩展等的答案,但我觉得我已经找到了解决方案。我想要反馈我的方式是否正确,因此这个问题。

我所做的很简单。插入多行后,我调用 last_insert_id() 来获取同时插入的行的第一行的 ID。我已经知道插入的行数,所以我只需创建一个新数组并使用从 last_insert_id() 开始并以 last_insert_id()+n-1 结束的 ID 填充它(其中 n 是插入的行数)。

我觉得这会起作用,原因如下:

1.) MYSQL 文档指出 last_insert_id() 依赖于连接,如果另一个客户端/连接插入新记录,则不会影响其他客户端的 last_insert_id()。

2.) 我觉得插入是由单个 SQL 语句完成的,整个插入应该被视为单个事务。如果这是真的,那么应该应用 ACID 规则并且 auto_incremented 值应该是连续的。我不确定这个。

这就是我认为逻辑应该有效的原因。所以我的问题是,上述逻辑是否适用于所有条件?我可以依靠它在所有情况下正常工作吗?我知道它目前对我有用。

最佳答案

如果你喜欢赌博 - 那么就这样做 :)

要 99% 确定您必须锁定表以进行写入。您不确定(将来)两笔交易是否能够交织在一起。

要 100% 确定您阅读了这些值。 (或者分析源码MySQL)最好的解决方案是将日期添加到表格编辑设置并阅读最新的。如果不想改变结构,可以使用触发器http://dev.mysql.com/doc/refman/5.0/en/create-trigger.html .

好的解决方案是刷新所有设置或仅刷新对:键 - 设置名称

关于php - 使用单个查询插入多行时获取所有插入的 ID,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16540997/

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