我用ASP.NET开发了一个网站程序,里面有一个表,主键字段类型是自增长的,并且在添加数据的时候需要获取主键值,我在把网站部署以后发现了一个问题,在不同的机器上通过浏览器访问网站,比如在A机器通过浏览器上执行了插入语句,那么A机器通过last_insert_id能获得新插入数据的主键值,但是在B机器上面,我通过浏览器直接调用last_insert_id,居然也能获得和A机器一样的数值,我的问题如下
1、在整个MYSQL数据库里面的 LAST_INSERT_ID 所获得的数值是否都是一样的,不管有多个客户端,读出来的都是数据库最新插入自增量类型的数值
2、会不会出现这样的情况,我在A机器调用 插入语句的时候,B机器也调用了插入语句,那么我A机器获取的 LAST_INSETT_ID其实是B机器产生的值,而不是A机器产生的数值,如果出现这样的情况,那是肯定会导致程序的业务逻辑错误的。
请高手指点。

解决方案 »

  1.   

    如果是在同一个SESSION 中, 则取到的是一个LAST ID, 不同的SESSION中是没有影响的。 如果A,B各用一个不同的SESSION则相互之前并不影响。但如果A本身的两次连接使用了不同的SESSION则不保证。
      

  2.   

    shifenglov (shifenglov)
      '截至2011-05-22 09:51:00  用户结帖率0.00% 当您的问题得到解答后请及时结贴.
    http://topic.csdn.net/u/20090501/15/7548d251-aec2-4975-a9bf-ca09a5551ba5.html
    http://topic.csdn.net/u/20100428/09/BC9E0908-F250-42A6-8765-B50A82FE186A.html
    http://topic.csdn.net/u/20100626/09/f35a4763-4b59-49c3-8061-d48fdbc29561.html8、如何给分和结贴?
    http://community.csdn.net/Help/HelpCenter.htm#结帖
      

  3.   

    http://javahou.blog.163.com/blog/static/124403362200971995155763/用源代码解释的