我第一次使用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");
begin / commit tran语句是否会处理第2行和第3行之间可能的竞争条件?或者,我需要做一些TSQL相当于MySQL的“锁定表”吗?
答案 0 :(得分:7)
只需创建列itemID IDENTITY ON并让MS SQL引擎处理它。自己处理身份增量是非常不稳定的。
答案 1 :(得分:2)
您应该制作IDENTITY
列。