2010-01-12 26 views
0

我第一次使用SQL Server 2005,过去主要使用过MySQL。我习惯于使用auto_increment在表中创建唯一的ID。SQL Server:合理的“自动增量”技术?

无论如何......我正在一个Java应用程序中工作,需要做以下工作。假定我的表有两列:itemID(int)和itemValue(int)。

这基本上就是我想要做的(在dbconn方法只是伪代码):

dbconn.execSQL("begin tran"); 
int nextID = dbconn.execSQLSelect("select max(itemID)+1 from itemTable"); 
dbconn.execSQLInsert("insert into itemTable values " + nextID + ", 1000"); 
dbconn.execSQL("commit tran"); 

会的开始/提交TRAN语句处理线2和3之间可能存在竞争条件?还是有一些TSQL等价于我需要做的MySQL的“锁定表”?

回答

7

只要使列itemID IDENTITY ON,并让MS SQL引擎处理它。处理自己的身份增量非常不稳定。

+0

如果您需要或使用scope_Identity(),请使用OUtput子句返回标识,请勿使用@@ identity。 – HLGEM 2010-01-12 22:26:37

+0

是否有某种“锁定表”替代方案,我可以在此使用以使自动递增行为更稳定?由于各种原因,需要花费很长时间才能进入,我需要对自己的唯一ID进行显式控制。 – DanM 2010-01-13 17:48:04