ROWLOCK

Wicky
Дата: 03.12.2002 13:48:44
BEGIN TRANSACTION

/*Необходимо изменить стоимость накладной на сумму составляющую стоимость карт текущей строки*/
UPDATE КороткаяНакладная
Set СуммаПоНакладнойRUB = СуммаПоНакладнойRUB + (@Quantity * @CurrentCostPriceOfDilerCard_RUB),
ЗакСтПоНакладнойRUB = ЗакСтПоНакладнойRUB + (@Quantity * @CurrentOurPriceOfDilerCard_RUB)
WHERE (((КодКороткойНакладной)=@ShortAccountID))
COMMIT TRANSACTION


подскажите пожалуйста синтаксис как залочить изменяемую строку (rowlock)
funikovyuri
Дата: 03.12.2002 14:07:53
Вообще-то это автоматически делает сам сервер
tygra
Дата: 03.12.2002 15:10:43
UPDATE КороткаяНакладная with(rolock)


Тогда залочится ТОЛЬКО это строка, а так вся таблица
Юзер
Дата: 03.12.2002 15:50:57
2tygra

Я вот пробую по вашему совету UPDATE Northwind..Customers with (rowlock).
Выдает ошибку Incorrect syntax near ')'.
tygra
Дата: 03.12.2002 15:59:43
А полный текст update?
Юзер
Дата: 03.12.2002 16:13:40
Так я просто скопировал оператор UPDATE из вашего примера от 15:10. Только имя таблицы поменял, потому что таблицы КороткаяНакладная у меня нет.
tygra
Дата: 03.12.2002 16:30:03
Ну так а чего update-ил? Условие было?
Юзер
Дата: 03.12.2002 16:40:34
Условия нет никакого. Я пишу
begin tran
update Northwind..Customers set CustomerID = CustomerID

Вы говорите, что в этом случае будет блокироваться вся таблица, а у меня sp_lock выдает тучу блокировок уровня записи. Может вы чего-то напутали и (rowlock) не нужен?
tygra
Дата: 03.12.2002 16:44:25
Смотря от версии SQL

2000 "умный" очень, если много чего с таблицей делают, лочит ее всю.
Юзер
Дата: 03.12.2002 17:21:54
А "много чего" - это чего? Как модифицировать данный UPDATE (без хинтов), чтобы он залочил ее всю.