从mysql数据库中获取自动增量id

时间:2012-07-22 15:43:35

标签: php mysql auto-increment file-storage

我有一个带有自动增量字段的数据库。每当我在数据库中插入记录时,我想检索自动增量列的值。我使用mysql作为我的数据库,使用PHP作为我的编程语言。我尝试使用mysql_insert_id()函数,但是当在同一时间点发生大量插入时它不适合。

我想检索AI列的值,因为我正在存储相应记录的文件,因为我将文件存储在单个目录中,所以我需要文件名是唯一的。还有其他办法做同样的事情吗?

5 个答案:

答案 0 :(得分:2)

使用mysql_insert_id()应该是安全的,因为它将返回当前连接的最后插入的AI值(请参阅php.net)。因此,只要您在脚本中的INSERT查询之后立即调用该方法,即使您的脚本多次并发运行,也不会有任何竞争条件。

答案 1 :(得分:1)

对于单个插入,您可以在单个语句中执行此操作以确保获得正确的值

伪代码:

$query = "INSERT INTO TABLE1 VALUES(null, 'test')";
$id = mysql_execute("$query; SELECT LAST_INSERT_ID();"

另一种方法可能是设置ID。

假设您要添加1000行

1. query current ai value and store value

2. alter table set ai value = current + 1000;

3. make your inserts with setting ai value manually

   INSERT INTO TABLE1 VALUES ($id, 'test$id');

答案 2 :(得分:0)

对文件名使用uniqid()。 “根据当前时间以微秒为单位获取带前缀的唯一标识符。”

在这里查看php.net/manual/en/function.uniqid.php

答案 3 :(得分:0)

你也可以使用uniqid()生成一个唯一的数字,将其插入表中并使用相同的文件名。

http://php.net/manual/en/function.uniqid.php

答案 4 :(得分:0)

使用SQL检索最后一个插入的ID的另一种方法:

SELECT id FROM table ORDER BY id DESC LIMIT 1