AUTO_INCREMENT lastInsertId - 我的还是服务器?

时间:2012-10-12 13:30:21

标签: php mysql pdo

我在网上找到了一些关于AUTO_INCREMENT的相关读数,并想问你们一些事情。

这里有一些我发现与AUTO_INCREMENT插入有关的代码。我不确定该字段是否为auto_increment,如果我在插入时应该在PDO语法中跳过它,或者提及它并将其设置为NULL,因为无论如何它都将是AUTO_INCREMENT。

INSERT INTO CUSTOMER_ADDRESS (ADD_ID, ADD_TEXT) VALUES(NULL, 'some address value');

INSERT INTO CUSTOMER_DETAILS (NAME, ADD_ID, GENDER, PHONE_NO)
VALUES ('James Bond', LAST_INSERT_ID(), 'MALE', 007);

现在,我的问题是:

  1. LAST_INSERT_ID()或PDO的PDO :: lastInsertID($ dbh-> lastInsertId();)实际上是我做过的最后一次AUTO_INCREMENT ID,还是服务器完成的最后一次AUTO_INCREMENT? (请记住,当我调用该函数时,另一个说已经完成50个插入,而lastInsertID现在是不同的.....所以它是我上一次插入或服务器的最后一次插入。
  2. 非常感谢, 非常感谢您的知识

3 个答案:

答案 0 :(得分:2)

LAST_INSERT_ID()是特定于连接的,而不是特定于服务器的。

因此它总是与您所做的最后一次插入有关。

答案 1 :(得分:1)

自动增量将从之前的值自动增加,或使用您输入的值,因此您可以选择设置ID或让数据库选择ID,last_insert_id()返回该连接中最后插入的ID,自动或手动设置,无所谓

答案 2 :(得分:0)

这将是服务器为您执行的查询提供的最后一个ID。因此,在插入之后,您需要在另一个插入由同一脚本完成之前获取它。

此外,在使用pdo时,只需将自动增量字段保留。包括它并将其设置为特定值可能会阻碍自动增量正常工作。