【发布时间】:2014-10-06 15:20:08
【问题描述】:
我知道 mySQL 有查询 SELECT LAST_INSERT_ID()。
当它是一个小型网站并且没有多少用户使用它时,这可以正常工作。但是,当您的网站有更多用户使用它时,此选择可能会出现问题,因为我可以同时插入另一个内容,因此可能会产生问题。
我一直在阅读mySQLiTransactions 的一些内容,但我对此知之甚少。这是获取我插入的最后一个 id 的唯一方法,而不是来自可以与我同时插入内容的其他 id 吗??
提前致谢。
【问题讨论】:
-
不,它不会引起问题。
LAST_INSERT_ID()是特定于连接的,每个 PHP 脚本执行都有不同的 MySQL 客户端连接,因此在使用LAST_INSERT_ID()时用户彼此隔离。 -
"生成的 ID 在每个连接的基础上维护在服务器中。这意味着函数返回给给定客户端的值是大多数情况下生成的第一个 AUTO_INCREMENT 值该客户端影响 AUTO_INCREMENT 列的最新语句。该值不会受到其他客户端的影响,即使它们生成自己的 AUTO_INCREMENT 值。" dev.mysql.com/doc/refman/5.0/en/…
-
在 php 中,您可以在
mysqli_query('insert …');之后使用$id = mysqli_last_insert_id()。返回的 id 将始终与您的实际脚本相对应 -
事务有不同的用途——你可以执行多个
INSERT,UPDATE,DELETE查询,如果其中任何一个失败或者你遇到另一个不应该提交到数据库的条件,你可以滚动它们全部回到事务中,将数据库恢复到以前的状态。 -
感谢您的支持!现在我更好地理解它,正如所说,一旦他们告诉我,这就是我在这里问的原因。谢谢!