客户端 ,最大单据号问题。
我使用:VC MFC+ADO+SQL2000。没用存储过程等,直接在程序用SQL(SQL语句比较少)
问题:
有一个服务器,二个客户端。有一个记录表,如当前最大ID为5,
二个客户如果运行,同时增加记录时,点击增加按纽,都会取得当前最大ID 5 并设为新的ID 6, 问题是当保存时,为了二个记录避免重复ID,我又重新去获取当前最大ID,但是我就算我断开数据库连接再重新连接,第一个点保存为5,第二个也是5,(第一个保存为5,重新连接后,再取得最大ID应为6) 为什么不是6啊? 大家指点下如何解决,不要用存储过程,谢谢!
------解决方案--------------------select * from Tab with(TABLOCKX)
where ....
------解决方案--------------------id 建成自增的。 insert 结束后 用一个scope..什么的函数取出刚才插入的id.
------解决方案--------------------设置成identity
insert 以后用scope_identity()来取插入的id
建议用存储过程执行,这样能保证不乱。用SQL语句难说。
或者用ado的方法addnew之后在id字段里面取新id。
------解决方案--------------------楼上说的有道理,关键是事务要控制好