![](/img/trans.png)
[英]In sybase, how would I lock a stored procedure that is executing and alter the table that the stored procedure returns?
[英]How would I lock a stored procedure that is executing and alter the table that the stored procedure returns?
我有一張桌子,如下所示:
id status
-- ------
1 pass
1 fail
1 pass
1 na
1 na
另外,我有一個存儲過程,該過程返回一個表,其中前100條記錄的狀態為“ na”。 該存儲過程可由環境中的多個節點調用,我不希望它們獲取重復的數據。 因此,我想在執行過程中鎖定存儲過程,並將從存儲過程中獲取的記錄的狀態設置為“進行中”,然后返回該表,然后釋放該鎖,以使不同的節點不會獲取相同的內容數據。 我將如何完成?
您可以將select與WITH (SERIALIZABLE)
隔離級別一起WITH (SERIALIZABLE)
,以確保記錄被鎖定,直到狀態更新為止,如下所示。
SELECT TOP 100 id
INTO #temp
FROM [your_table] WITH (serializable)
WHERE status = 'na'
UPDATE ut
SET status = 'In Progress'
FROM [your_table] ut WITH (serializable)
INNER JOIN #temp T
ON T.id = ut.id
SERIALIZABLE
隔離級別指定以下內容:
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.