10bet网址
MySQL 8.0 C API开发指南
本手册下载
PDF (Ltr)- 1.3 mb
PDF (A4)- 1.3 mb
HTML下载(TGZ)- 165.5 kb
HTML下载(邮政编码)- 176.0 kb


5.4.39 mysql_insert_id ()

uint64_t mysql_insert_id (MYSQL * MYSQL)

描述

对象生成的值AUTO_INCREMENT前一栏插入更新声明。执行。后使用此函数插入语句导入包含AUTO_INCREMENT田野,或已使用插入更新设置列值LAST_INSERT_ID (expr

的返回值mysql_insert_id ()始终为零,除非在以下条件之一下显式更新:

的返回值mysql_insert_id ()可以简化为以下顺序:

  1. 如果有AUTO_INCREMENT列,并成功插入一个自动生成的值,返回第一个这样的值。

  2. 如果LAST_INSERT_ID (expr发生在语句中,returnexpr,即使有AUTO_INCREMENT受影响表中的列。

  3. 返回值取决于所使用的语句。当在插入声明:

    • 如果有AUTO_INCREMENT列,并且该列有一些显式值已成功插入到表中,返回最后一个显式值。

    当在插入……关于重复密钥更新声明:

    • 如果有AUTO_INCREMENT列在表中有一些显式的成功插入值或一些更新值,返回最后插入或更新的值。

mysql_insert_id ()返回0如果前面的语句不使用AUTO_INCREMENT价值。如果您必须为以后保存该值,请确保调用mysql_insert_id ()紧接生成值的语句之后。

的价值mysql_insert_id ()仅受当前客户端连接中发出的语句的影响。它不受其他客户端发出的语句的影响。

LAST_INSERT_ID ()SQL函数将包含成功插入的第一个自动生成的值。LAST_INSERT_ID ()不会在语句之间重置,因为该函数的值在服务器中维护。另一个区别mysql_insert_id ()是,LAST_INSERT_ID ()如果设置AUTO_INCREMENT列转换为特定的非特殊值。看到信息功能

mysql_insert_id ()返回0调用语句,用于生成AUTO_INCREMENT因为在这种情况下mysql_insert_id ()适用于调用而不是过程中的语句。在过程中,您可以使用LAST_INSERT_ID ()在SQL级别获取AUTO_INCREMENT价值。

两者差异的原因LAST_INSERT_ID ()mysql_insert_id ()是,LAST_INSERT_ID ()易于在脚本中使用,而mysql_insert_id ()试着提供更准确的信息AUTO_INCREMENT列。

请注意

客户端/服务器协议中使用的OK包保存了一些信息,比如用于跟踪会话状态的信息。当客户端读取OK包以了解是否有会话状态变化时,这将重置诸如最后插入的ID和受影响的行数等值。这些变化导致mysql_insert_id ()在执行包括但不一定限于的命令后返回0COM_PINGCOM_REFRESH,COM_INIT_DB

返回值

在前面的讨论中描述的。

错误

  • ER_AUTO_INCREMENT_CONFLICT

    用户指定的AUTO_INCREMENT值在一个多插入语句位于当前AUTO_INCREMENT值,以及受影响值的当前行数和行数的总和。