2010-01-05 77 views

回答

6

我不知道您正在使用哪种语言,在PHP的MySQL的功能,你可以使用

mysql_insert_id()

在我所知的每一个mySQL客户端库中都有类似的功能。

此外,还有一个native mySQL function

LAST_INSERT_ID()(无参数) 返回由最 最近执行的INSERT语句用于 AUTO_INCREMENT列设置为 第一自动 生成的值影响这样的列。例如, 插入产生 一个AUTO_INCREMENT值的行之后,就可以得到 这样的值:

的MySQL> SELECT LAST_INSERT_ID(); - > 195

当然,使用AUTO_INCREMENT的主键需要这些功能才能正常工作。

+0

+1的原生MySQL的方法是正确的,太 - 从来没有想过一个^^ – 2010-01-05 22:34:49

2

对于一个AUTO_INCREMENT id字段的表:

UPDATE tbl SET col1 = 'val1' WHERE id = MAX(id);

+1

不保证,如果有多个用户/线程 – duffymo 2010-01-05 23:07:27

2

如果这是一行已插入到您的脚本(您想从中更新它的同一脚本)并且您的表上有一个auto_increment列,则可以使用函数(如这些,对于PHP:

应该有可能用于应用程序的任何语言的等效语言。


如果您试图从另一个脚本执行更新,而不是执行插入操作,并且仍然有auto_increment列,则最好的方法可能是更新具有最大值的行该列:

update your_table 
set your_column = ... 
where id = max(id) 

或者,在两个步骤(不知道它会在一个工作)

select max(id) as id from your_table 

update your_table set your_column = ... where id = [what you got with thr first query] 
+0

男人男人的男人......你的PHP简单的答案最好的。 :) – 2010-01-05 22:32:31

+0

即使这个问题没有指定“php”,我仍然给出一个与PHP相关的答案 - 好吧,PHP经常使用,它可能适用于这里;;谢谢 :-) – 2010-01-05 22:33:59

2

您还可以使用UPDATE table SET ... WHERE id=LAST_INSERT_ID()(suppos最后一个插入位于要查询的表上)。

1

我不会使用两个步骤来找到最后一个插入ID,只是因为可以同时添加一条新记录。

根据你的版本,你应该可以调用$ handle-> last_id();或$ handle - > {mysql_insertid};

克里斯