my_ulonglong mysql_insert_id(mysql * mysql)
返回为此生成的值AUTO_INCREMENT
前一栏插入
或更新
陈述。执行此后使用此功能插入
声明进入包含一个的表AUTO_INCREMENT
字段或已使用插入
或更新
设置列值LAST_INSERT_ID (
。expr
)
返回值mysql_insert_id ()
始终为零,除非在以下条件之一下显式更新:
插入
将值存储为一个值的陈述AUTO_INCREMENT
柱子。这是真的,无论是通过存储特殊值自动生成的值零
或0.
进入列,或者是明确的非特殊值。在多排的情况下
插入
声明中,mysql_insert_id ()
返回第一个自动生成的AUTO_INCREMENT
已成功插入的。如果没有成功插入行,
mysql_insert_id ()
返回0。如果一个
插入...选择
执行语句,未将自动生成的值插入,mysql_insert_id ()
返回最后插入行的ID。如果一个
插入...选择
声明使用LAST_INSERT_ID (
那expr
)mysql_insert_id ()
回报expr
。插入
产生的陈述AUTO_INCREMENT
通过插入LAST_INSERT_ID (
进入任何列或通过更新任何列expr
)LAST_INSERT_ID (
。expr
)如果前面的语句返回错误,则
mysql_insert_id ()
是未定义的。
返回值mysql_insert_id ()
可以简化到以下序列:
如果有一个
AUTO_INCREMENT
列和已成功插入自动生成的值,返回第一个此类值。如果
LAST_INSERT_ID (
发生在声明中,回归expr
)expr
,即使有一个AUTO_INCREMENT
受影响表中的列。返回值取决于所使用的语句。在呼叫之后
插入
陈述:如果有一个
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
。
用户指定的
AUTO_INCREMENT
多个价值插入
语句位于当前AUTO_INCREMENT
值和日流的总和和影响值的行数。