ITPUB??ì3
新一届的微软MVP评选已经开始,欢迎各位推荐!
ITPUB论坛 » MySQL及其它开源数据库 » last_insert_id()不可靠!!!

标题: last_insert_id()不可靠!!!
离线 itpubkumao
中级会员


来自 上海
精华贴数 0
个人空间 0
技术积分 1961 (824)
社区积分 274 (2002)
注册日期 2007-7-8
论坛徽章:7
      
      

发表于 2008-3-24 11:18 
last_insert_id()不可靠!!!

情况如下:

mysql> create table t (c1 integer auto_increment primary key);
Query OK, 0 rows affected (0.02 sec)

mysql> select last_insert_id();
+------------------+
| last_insert_id() |
+------------------+
|                0 |
+------------------+
1 row in set (0.00 sec)

mysql> insert t value();
Query OK, 1 row affected (0.01 sec)

mysql> select * from t;
+----+
| c1 |
+----+
|  1 |
+----+
1 row in set (0.00 sec)

mysql> select last_insert_id();
+------------------+
| last_insert_id() |
+------------------+
|                1 |
+------------------+
1 row in set (0.00 sec)

mysql> insert t value(),(),();
Query OK, 3 rows affected (0.00 sec)
Records: 3  Duplicates: 0  Warnings: 0

mysql> select last_insert_id();   <-----   这里出错
+------------------+
| last_insert_id() |
+------------------+
|                2 |
+------------------+
1 row in set (0.00 sec)

mysql> select * from t;
+----+
| c1 |
+----+
|  1 |
|  2 |
|  3 |
|  4 |
+----+
4 rows in set (0.00 sec)

mysql> select last_insert_id();
+------------------+
| last_insert_id() |
+------------------+
|                2 |
+------------------+
1 row in set (0.00 sec)

mysql> insert t value();
Query OK, 1 row affected (0.02 sec)

mysql> select * from t;
+----+
| c1 |
+----+
|  1 |
|  2 |
|  3 |
|  4 |
|  5 |
+----+
5 rows in set (0.00 sec)

mysql> select last_insert_id();
+------------------+
| last_insert_id() |
+------------------+
|                5 |
+------------------+
1 row in set (0.00 sec)

mysql>

有无办法解决?是不是要设什么参数?是Bug吗?

谢谢!


__________________
能做得更好!
只看该作者    顶部
离线 itpubkumao
中级会员


来自 上海
精华贴数 0
个人空间 0
技术积分 1961 (824)
社区积分 274 (2002)
注册日期 2007-7-8
论坛徽章:7
      
      

发表于 2008-3-24 15:21 
顶一下


__________________
能做得更好!
只看该作者    顶部
离线 jinguanding
Eugene


来自 上海
精华贴数 1
个人空间 70
技术积分 2401 (655)
社区积分 79 (3902)
注册日期 2007-3-29
论坛徽章:5
现任管理团队成员2008北京奥运纪念徽章:乒乓球2008北京奥运纪念徽章:柔道生肖徽章2007版:鼠ITPUB新首页上线纪念徽章 
      

发表于 2008-3-24 16:26 
就是这样的....呵呵


__________________
.....做人做事尽心尽力,做学问谦虚求根问底.......
......***寻MySQL方面的兼职***......
.....专业的综合布线、安防公司........................
......www.showgold.cn..............................
......上海亮金信息技术有限公司.......................
只看该作者    顶部
离线 itpubkumao
中级会员


来自 上海
精华贴数 0
个人空间 0
技术积分 1961 (824)
社区积分 274 (2002)
注册日期 2007-7-8
论坛徽章:7
      
      

发表于 2008-3-24 16:33 


QUOTE:
原帖由 jinguanding 于 2008-3-24 16:26 发表
就是这样的....呵呵

这不是不对了吗?!


__________________
能做得更好!
只看该作者    顶部
离线 cyt2005
老会员


来自 天津
精华贴数 0
个人空间 0
技术积分 2346 (669)
社区积分 83 (3784)
注册日期 2006-3-9
论坛徽章:10
会员2007贡献徽章2008北京奥运纪念徽章:摔跤2008北京奥运纪念徽章:艺术体操2008北京奥运纪念徽章:举重生肖徽章2007版:虎生肖徽章2007版:兔
生肖徽章2007版:鼠生肖徽章2007版:猴生肖徽章2007版:牛ITPUB新首页上线纪念徽章  

发表于 2008-3-24 17:15 
没看出错来。。。


__________________
饥饿艺术家说着,小脑袋微微抬起,嘴唇像要吻看管人似的,直贴在他的耳根,生怕露掉一个字,“因为我找不到适合我胃口的食物。假如我找到这样的食物,请相信我,我不会招人参观,惹人显眼,并像你,像大伙一样,吃得饱饱的。”
只看该作者    顶部
离线 sky000
一般会员



精华贴数 0
个人空间 0
技术积分 207 (9156)
社区积分 1 (34976)
注册日期 2004-3-3
论坛徽章:1
生肖徽章2007版:鸡     
      

发表于 2008-3-24 19:23 
mysql的last_insert_id()在批量插入之后,是会有这样的问题的


__________________
只看该作者    顶部
离线 yueliangdao0608
斑竹
上帝他爸


来自 中国-红灯区-深圳
精华贴数 0
个人空间 0
技术积分 3995 (362)
社区积分 1471 (739)
注册日期 2005-2-25
论坛徽章:20
现任管理团队成员紫蜘蛛玉兔生肖徽章2007版:牛2008北京奥运纪念徽章:花样游泳2008北京奥运纪念徽章:击剑
2008北京奥运纪念徽章:足球2008北京奥运纪念徽章:垒球2008北京奥运纪念徽章:拳击2008北京奥运纪念徽章:手球2008北京奥运纪念徽章:自行车 

发表于 2008-3-24 21:04 

__________________
-------------------------------------------------------
以前搞维护-搞软件-搞网站-现在搞DBA ---
点击这里访问我的技术博客

最近在练习英语中。。。
Losing my face!
只看该作者    顶部
离线 jinguanding
Eugene


来自 上海
精华贴数 1
个人空间 70
技术积分 2401 (655)
社区积分 79 (3902)
注册日期 2007-3-29
论坛徽章:5
现任管理团队成员2008北京奥运纪念徽章:乒乓球2008北京奥运纪念徽章:柔道生肖徽章2007版:鼠ITPUB新首页上线纪念徽章 
      

发表于 2008-3-24 21:16 
last_insert_id()作用就是返回数据库当前连接里最近生成的auto_increment数值,但是使用insert into ** values(0,()...
就会存在你所说的问题.........所以我就也没有使用这个家伙到我的code中。

不知道是什么原因...........估计需要去查下资料.....也许是跟insert into ** values(0,()...只打开一次 表的写方式有关系...


__________________
.....做人做事尽心尽力,做学问谦虚求根问底.......
......***寻MySQL方面的兼职***......
.....专业的综合布线、安防公司........................
......www.showgold.cn..............................
......上海亮金信息技术有限公司.......................
只看该作者    顶部
离线 itpubkumao
中级会员


来自 上海
精华贴数 0
个人空间 0
技术积分 1961 (824)
社区积分 274 (2002)
注册日期 2007-7-8
论坛徽章:7
      
      

发表于 2008-3-25 07:40 
谢谢!


__________________
能做得更好!
只看该作者    顶部
离线 bessiefu
初级会员



来自 上海
精华贴数 0
个人空间 0
技术积分 92 (17724)
社区积分 0 (695433)
注册日期 2005-11-21
论坛徽章:0
      
      

发表于 2008-3-26 17:18 
用返回参数,
SET newId=@@IDENTITY;


只看该作者    顶部
相关内容


CopyRight 1999-2006 itpub.net All Right Reserved.
北京皓辰广域网络信息技术有限公司. 版权所有
E-mail:Webmaster@itpub.net
京ICP证:010037号 联系我们 法律顾问