SQL Server: разумные методы «автоматического увеличения»? - PullRequest
0 голосов
/ 12 января 2010

Я использую SQL Server 2005 впервые, в прошлом в основном работал с MySQL. Я привык использовать auto_increment для создания уникальных идентификаторов в таблицах.

В любом случае ... Я работаю в 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, который мне нужно сделать?

Ответы [ 2 ]

7 голосов
/ 12 января 2010

Просто сделайте столбец itemID IDENTITY ON и пусть обработчик MS SQL справится с этим. Самостоятельная обработка приращений идентичности очень и очень нестабильна.

2 голосов
/ 12 января 2010

Вы должны сделать столбец IDENTITY.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...