MYSQL 小技巧 -- LAST_INSERT_ID

yipeiwu_com6年前Mysql基础
其实,这两个是有区别的,LAST_INSERT_ID() 能返回 bigint 值的id。而,mysql_insert_id 返回的是 int 。如果你
的id 是 unsigned int,或者 bigint 的 。那么,可能是返回的是错误的。而要用 LAST_INSERT_ID() 代替。

还有些朋友,返回的都是 0,不知道怎么回事,其实 LAST_INSERT_ID() 返回的是 AUTO_INCREMENT 的 ID。
如果,表结构中,没有设置,AUTO_INCREMENT 那么也无法返回。

还有些人,还是返回为 0. 那么你就要检查一下,是不是 用了 insert delay 的功能。这种情况下,是不会返回即时的返回id值的。

很多人喜欢用 select max(id) ... 来替换这个last_insert_id, 实际上, select max(id) 是非线程安全的,很有可能,
其他线程插入了新的数据,你就查不到你上次插入的 ID 了。而last_insert_id 是 和 一个mysql connect 相对应的,也就是
和你的当前线程相对应的,不会受其他线程的干扰。如果你的数据库发生了一些奇怪的错误,比如,本来是要更新A 数据的信息的,
结果 B 数据被更新了,而且是有时候正确,有时候不正确,人多的时候会非常的不正确。就要看看是不是 用了 select max(id)

相关文章

php判断输入不超过mysql的varchar字段的长度范围

但是如果在utf-8编码下,一个汉字是占3个字符长度的,比如字符串$str=”你好啊!!”; 如果你用strlen函数来判断,长度是11,正好超过了varchar的长度,但实际上确不是这...

php+mysqli事务控制实现银行转账实例

本文实例讲述了php+mysqli事务控制实现银行转账的方法。分享给大家供大家参考。具体分析如下: 事务控制,也就是说所有的语句执行成功后,才会提交。否则,如果前面有语句执行成功,而后面...

解析mysql left( right ) join使用on与where筛选的差异

解析mysql left( right ) join使用on与where筛选的差异

有这样的一个问题mysql查询使用mysql中left(right)join筛选条件在on与where查询出的数据是否有差异。可能只看着两个关键字看不出任何的问题。那我们使用实际的例子来...

mysql 全文搜索 技巧

<< Back to man.ChinaUnix.net  MySQL Reference Manual ...

PHP+mysql实现从数据库获取下拉树功能示例

本文实例讲述了PHP+mysql实现从数据库获取下拉树功能。分享给大家供大家参考,具体如下: <?php include "config.php"; include "...