我是在认识到MySQL的LAST_INSERT_ID()函数不插入尝试重置之间(如@@身份在SQL服务器一样)纠正......如果前一个插入操作失败,LAST_INSERT_ID()将返回无论PK的这方面的最后插入到PK 任何表自动递增的主键。如果我在这是正确的,这个问题似乎并不像只是这个功能,人们可以拿出最滞后的行为吗?有没有其功能类似于SQL服务器的@@身份MySQL的功能?如果一个在 紧接插入尝试创建没有新的记录,将返回NULL?可替代地,一个人如何确切知道最近的插入操作的主键?

有帮助吗?

解决方案

@@身份通常是在SQL Server错误也是如此。你应该用在大多数情况下scope_identity()代替。

在MySQL中,LAST_INSERT_ID()应该是安全的使用,因为只有这样,你可以调用这个函数后插入错误是你已经正确地抓住并占插入误差。否则,你仍然会处理命令。换句话说,LAST_INSERT_ID()不是你的错误处理机制。

其他提示

您必须检查是否插入成功第一。如果插入成功,那么你可以依靠LAST_INSERT_ID()。

编辑:在PHP:

<?php
$link = mysql_connect('localhost', 'mysql_user', 'mysql_password');
if (!$link) {
    die('Could not connect: ' . mysql_error());
}
mysql_select_db('mydb');

mysql_query('<PUT YOUR INSERT HERE');
if(mysql_affected_rows()>0){
  $last_id=mysql_insert_id();
}else{
  //panic!
}
?>
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top