2016-09-20 2 views
1

В одной таблице есть столбец INT с первичным ключом и ограничениями идентификации. Когда две параллельные транзакции вставляют строку в таблицу, какая из транзакций будет содержать значение столбца HIGHER, то, которое выполнило оператор INSERT позже или тот, который закончился или был завершен позже?В SQL Server - это значение идентификатора, сгенерированное/назначенное при выполнении инструкции вставки или при совершении транзакции?

+1

Параметр 'идентичность 'значение присваивается в тот момент, когда строка сохраняется на диске - поэтому, когда транзакция начинается, действительно не имеет значения - момент, когда данные записываются, - это когда выдается идентификационные значения –

+1

Идентификация будет считаться используемой, даже если транзакция откат , поэтому нижнее значение id будет для оператора insert, который был запущен первым. Тот факт, что столбец является первичным ключом, не имеет отношения к вопросу. –

+0

ОК, я переформулировал вопрос. Мне нужно понять, возможно ли, что транзакция, которая началась раньше, но закончилась позже, может генерировать значение столбца LOWER. – ivan

ответ

0

идентификатор генерируется во время выполнения операции вставки, так что вставка (1), который был выполнен перед вставкой (2) будет иметь более низкий ID (конечно, если приращение положительно :))

+0

Это зависит от того, когда совершена транзакция? или значение идентификатора, заявленное непосредственно, когда INSERT обрабатывается в потоке транзакции? – ivan

+0

Не имеет значения, совершена ли транзакция или откат. Идентификационная ценность заявляется при обработке INSERT. – Anton

Смежные вопросы