SQL Server:合理的"自动增量"技术?

Dan*_*anM 0 sql t-sql sql-server transactions

我第一次使用SQL Server 2005,过去主要使用MySQL.我习惯使用auto_increment在表中创建唯一的ID.

无论如何......我正在使用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");
Run Code Online (Sandbox Code Playgroud)

begin/commit tran语句是否会处理第2行和第3行之间可能的竞争条件?或者是否有一些TSQL相当于MySQL的"锁表",我需要做什么?

End*_*der 7

只需将列itemID IDENTITY设为ON,然后让MS SQL引擎处理它.自己处理身份增量是非常不稳定的.