Re[3]: Индексы и MS SQL Server 2000
От: Алекс Россия http://wise-orm.com
Дата: 14.10.02 10:23
Оценка: 9 (2) -1
Здравствуйте Lloyd, Вы писали:

L>Здравствуйте .smoke, Вы писали:


[]

L>Нет. (с)


Это почему? Наоборот! Да'с!

Аргументирую. Если сервер работает в режиме автоматических транзакций, то
MSDN:
individual Transact-SQL statement is committed automatically if it is successful and rolled back automatically if it generates an error.

В таком случае между insert'ом и последующим select'ом может проскочить другая транзакция. Результат будет не верный. Для предотвращения этого необходимо непосредственно указать принадлежность двух инструкций одной транзакции.
При чем, если тупо написать
begin tran
insert into dmd values(1291,4575)
select @@IDENTITY
commit

то это не особо поможет. Так как после insert пользователю (по умолчанию) запрещается только читать данные. Необходимо явно указать вид блокировки.
begin tran
insert into dmd with (tablock) values(1291,4575)
select @@IDENTITY
commit
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.