Gar*_*igo 11 php mysql database auto-increment
我已经看过其他答案了,我仍然认为我的问题是相关的,值得一个单独的条目.
我有一个名为settings的表(存储用户设置),我必须为每个用户插入多个设置.最初,我为每个设置执行了一个单独的insert语句,但是觉得这不是一个特别好的方法,我想通过相同的insert语句插入多行.我唯一的问题是我想要每个新插入行的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值应该是顺序的.我不确定这个.
这些是我认为逻辑应该起作用的原因.所以我的问题是,上述逻辑是否适用于所有条件?我可以依靠它在所有情况下都能正常工作吗?我知道它目前对我有用.
如果你喜欢赌博 - 那么就这样做:)
\n\n为了 99% 确定,您必须锁定表以进行写入。您不确定(将来)两个事务\xc2\xa0 将无法交织在一起。
\n\n为了百分百确定您已阅读这些值。(或者分析源MySQL)\n最好的解决方案是将日期添加到tablei编辑设置中并读取最新的。如果您不想更改结构,可以使用触发器http://dev.mysql.com/doc/refman/5.0/en/create-trigger.html。
\n\n好的解决方案将刷新您的所有设置或仅刷新对:键 - 设置名称
\n 归档时间: |
|
查看次数: |
5208 次 |
最近记录: |