В нашей компании мы используем представления и хранимые процедуры.
Недавно мы начали реализовывать оператор NOLOCK
во многих наших представлениях.
Мне было интересно: если я применяю NOLOCK
к представлению, оно «просачивается» в хранимую процедуру.
Скажем, у меня есть представление под названием viewPartyPackage
, а оператор представления был ...
SELECT
PartyPackageID, Name, Created, LastModified, Deleted
FROM
dbo.PartyPackage WITH (NOLOCK)
WHERE
(Deleted = 0)
а также у меня была хранимая процедура:
ALTER proc [dbo].[partypackage_Select]
(@PartyPackageID bigint = null)
AS
SELECT *
FROM [viewPartyPackage] PartyPackage
WHERE (@PartyPackageID IS NULL OR @PartyPackageID = [PartyPackageID])
Потеряю ли я функцию NOLOCK из-за того, что я вызываю из хранимой процедуры, и мне, в свою очередь, нужно будет добавить (NOLOCK) к хранимой процедуре? Или в игру вступает НОЛОК, который находится в поле зрения?
SET TRANSACTION READ UNCOMMITTED
в начале. Знает ли ваша компания о рисках использованияNOLOCK
? т.е. вы можете получить неправильные числа - person Nick.McDermaid   schedule 24.12.2016