日期:2014-05-18  浏览次数:20460 次

客户端 ,最大单据号问题。


    我使用: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。
------解决方案--------------------
楼上说的有道理,关键是事务要控制好