10bet网址
MySQL 5.7 C API开发人员指南
下载本手册

5.4.38 mysql_insert_id()

my_ulonglong 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发生在声明中,回归expr,即使有一个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.遵循A.称呼生成存储过程的语句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 ()在执行命令后返回0,包括但不必限于com_ping.com_refresh.,COM_INIT_DB

返回值

在前面的讨论中描述。

错误