【发布时间】:2014-10-17 16:12:31
【问题描述】:
让我们假设一个表格如下:
ID = INT,自动增量
VAR = VARCHAR, 65
FOO = VARCHAR, 65
我想插入一些新的东西,并获得自动生成的 ID,以供进一步使用。
我目前的解决方案是:
1.INSERT into table (VAR,FOO) VALUES ('test','anothertest')
2.SELECT * FROM table ORDER BY ID LIMIT 1
获取最后一个插入,但问题是,如果网站滞后,并且查询之间存在时间间隔,会发生什么?
示例:
12:00AM 0.000s -> "INSERT into table (VAR,FOO) VALUES ('test','anothertest')-
12:00AM 0.500s -> "INSERT into table (VAR,FOO) VALUES ('xyz', '!!!!!)` 12:00AM 0.800s -> "SELECT * FROM table ORDER BY ID LIMIT 1
3 中的查询不会返回来自 1 的 ID,它会返回来自 2 的 ID
我的问题是,是否有绝对安全的方式从插入的查询中获取值?
like一个确认“测试,anothertest已成功插入表,ID为20”
ID 应该在 php 中作为变量提供,仅供参考
【问题讨论】:
-
使用事务来确保
-
怎么样? @Undefined_variable