在我们公司,我们倾向于使用视图和存储过程。
我们最近开始对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) 吗?还是视图中的 NOLOCK 起作用了?