ASP.NET 使用 MYSQL 的数据库自增量问题

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


请高手指点。。。。
...全文
64 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
李小冲 2011-05-23
  • 打赏
  • 举报
回复
简化一下,就是两个用户,A和B,当A进行插入操作后,想获取这个自增的userid的值,而你考虑到这个时候几乎同时再来一个B用户进行插入操作了,用户A所获取的userid值是B用户的值么,这样获取感觉有些不合理。当你插入一条记录会,应该标记这条记录是A还是B所插入的,根据这个值再进行操作吧。
zachary_OOM 2011-05-22
  • 打赏
  • 举报
回复
连接池会不会对LAST_ID也有影响,在开发ASP.NET网站的过程中是会用到连接池的
zachary_OOM 2011-05-22
  • 打赏
  • 举报
回复
但是我分别在A和B两台机器上使用浏览器访问了网站,这样的情况应该是不同的SESSION,但是为什么B机器我没有执行插入操作,但是仍然能够取得A机器的LAST_ID呢
ACMAIN_CHM 2011-05-22
  • 打赏
  • 举报
回复
如果是在同一个SESSION 中, 则取到的是一个LAST ID, 不同的SESSION中是没有影响的。 如果A,B各用一个不同的SESSION则相互之前并不影响。

但如果A本身的两次连接使用了不同的SESSION则不保证。

62,046

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧