1

我在网上找到了一些关于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 现在不同了......所以它是我的最后一个插入还是服务器的最后一个插入。

非常感谢,非常感谢您的知识

4

3 回答 3

2

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

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

于 2012-10-12T13:31:31.677 回答
1

Autoincrement 将从先前的值自动增加,或使用您输入的值,因此您可以选择设置 ID 或让数据库选择 ID,并last_insert_id()返回该连接中最后插入的 id,自动或手动设置,不会事情

于 2012-10-12T13:33:20.043 回答
0

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

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

于 2012-10-12T13:33:14.080 回答