我有一个系统 服务器端数据库只建立了一个用户 客户端2个都是用这个用户登录 在做交易插入销售表的时候先查询max(saleid)然后插入新一条记录 出现问题是两个客户端同事交易时可能一个成功另外一个不成功,还有可能是两个记录都插入了但是saleid值确一样 这得怎么处理啊 ?我修改应用程序用了事务处理,这样应该是能解决插入数据id相同问题,但是多机访问的时候是不是还是有可能会一个成功另一个失败?这个问题怎么处理?
解决方案 »
- Delphi中BDE连接Access问题!
- 关于XPmenu对于Panel中控件不能显示XP效果?????
- 存储过程p1有参数,用TADOStoredProc执行该存储过程时语句该怎么写?我不知道怎么把实参传递该存储过程。
- 高分求教,如何取得Flash文件的原始长、宽????在线等候!
- 三层中如何从客户端将图片加入到Sql Server中的image字段中....?
- 关于自定义函数和过程的问题?
- 请问如何在delphi中调用html help 做的帮助.chm文件?请给出代码?谢谢!
- 如何实现系统多语言开发
- 请问在TADODataset中加入一条记录代码该如何写
- 关于消息
- 关于TChart的简单应用
- delphi 怎样读取和修改 RES文件
而且sqlserver采用的是表级锁,所以当你在执行时,会把此表锁住,其它用户会等待。
对于查询等,建议要用 select * from table with(nolock)这样可以不用等待即可查询出信息,这也是操作SQL正确的访问方式。理解的如果不对,请别笑话我呵
select max(userid) from tab_a
insert into tab_a........
select max(mid) from tab_b
insert into tab_b........
insert into tab_c........服务器端用TDatabase连接数据库,用户和密码设定了一个;还有另一个交易用如下事务处理
StartTransaction
update tab_a......
update tab_c.......
update tab_b.......
insert tab_c.......
.......
Commit
sleep(800)我在2个客户端应用程序用到上面两个交易,只要这两个交易同事发生,就有可能系统停止相应,这个是什么问题?是不是我所有的客户端都是以一个数据库用户登录引起的?