在我們公司,我們傾向於使用視圖和存儲過程。TSQL NOLOCK VIEW和存儲過程
我們最近開始實施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起作用了嗎?
如果您想在整個過程中使用它,請在開始時使用'SET TRANSACTION READ UNCOMMITTED'。貴公司是否知道使用'NOLOCK'的風險?即你可能得到不正確的數字 – 2016-12-24 10:17:57