能保证程序不会退出的话
public statis class Increment {
private static readonly object locker = new object();
private static int id = 0;
public static int Get() {
lock(locker) {
id++;
return id;
}
}
}
在oracle数据库中创建一个序列SEQ_MODLENAME_ID,它的increment为100,每次读取序列NEXTVAL后保存到全局变量K,如楼上说的加锁进行递增读取,如果值增加到K%100==0了则从数据库中读取NEXTVAL更新K,系统挂了重启后读取的也是序列的NEXTVAL,不会重复
自增长不就可以么?
楼上说的自增长是一种办法,它但有一定的局限性
在实际过程中,我们往往可以在数据库中取得最大的ID,然后,在程序中进行一定的处理后,再进行一定的操作,仅供参考!
用序列自动增长是很方便的,有个缺点是如果删除了其中一条,它会继续增长,那一个id会空,因为序列是与本表无关的,如果按quest chen说的,跟序列一样,如果想把让每个ID充分利用,要先遍历整个ID,哪一行空,当前数据插入哪一行。如果不空,插入最后一行。