我也经常碰到者样的问题
如果是单用户操作,最方便了,只要取出Max(NOID)就可以了,为体是多用户的话,或许取出的就不一定是你刚刚保存的字段了
解决办法: 有时为了方便会故意把NoID不设置为种子字段
然后再加一个表PubTable(这个表就一条记录),设置一个字段为MaxNoID
然后写一个StoreProduce,其中,每次增加一条记录到Customer时,先从
PubTable中取出当前的MaxNoID的值+1供记录插入之用,然后同时把 Update
PubTable set MaxNoID=MaxNoID+1 ……在你做Customer.append前就可先调用StoreProduce取得MaxNoID+1的值,这样就可以保证你后面要用的NoID是刚刚插入的了!如果的确是种子字段的话,我想如果多用户操作的时候是不安全的,很可能取得的是在你Append只后别人立刻Append的NoID(如果你是在Append前取出NoID+1也存在同样的危险)……所以这种情况用种子字段是不好的
方正如果用种子断断,我没有办法解决这种问题!
如果是单用户操作,最方便了,只要取出Max(NOID)就可以了,为体是多用户的话,或许取出的就不一定是你刚刚保存的字段了
解决办法: 有时为了方便会故意把NoID不设置为种子字段
然后再加一个表PubTable(这个表就一条记录),设置一个字段为MaxNoID
然后写一个StoreProduce,其中,每次增加一条记录到Customer时,先从
PubTable中取出当前的MaxNoID的值+1供记录插入之用,然后同时把 Update
PubTable set MaxNoID=MaxNoID+1 ……在你做Customer.append前就可先调用StoreProduce取得MaxNoID+1的值,这样就可以保证你后面要用的NoID是刚刚插入的了!如果的确是种子字段的话,我想如果多用户操作的时候是不安全的,很可能取得的是在你Append只后别人立刻Append的NoID(如果你是在Append前取出NoID+1也存在同样的危险)……所以这种情况用种子字段是不好的
方正如果用种子断断,我没有办法解决这种问题!
但只要在一次失败后,可以再试一次.
create table customer(
noid integer not null identity primary key,
name varchar(255) null,
......
)在运行时不需要写入noid,它由数据库自己增加,多用户时也不会出问题。