我正在使用SQL Server 2008 Enterprise。我想知道這個存儲過程是否會導致死鎖,如果多個線程同時執行?另一個問題是 - 我們在存儲過程中定義開始和結束事務還是從客戶端代碼定義開始和結束事務(例如ADO.Net代碼)是否是最佳實踐?這樣的存儲過程會導致死鎖嗎?
create PROCEDURE [dbo].[FooProc]
(
@Param1 int
,@Param2 int
,@Param3 int
)
AS
DELETE FooTable WHERE Param1 = @Param1
INSERT INTO FooTable
(
Param1
,Param2
,Param3
)
VALUES
(
@Param1
,@Param2
,@Param3
)
DECLARE @ID bigint
SET @ID = ISNULL(@@Identity,-1)
IF @ID > 0
BEGIN
SELECT IdentityStr FROM FooTable WHERE ID = @ID
END
由於事先 喬治
將合併你在2008年SQL需要什麼?也應該避免使用@@身份。使用SCOPE_IDENTIY – 2010-06-04 15:28:43
是的,我正在分析遺留代碼的一些問題,並且我需要分析死鎖是否由此存儲過程引起。任何關於我原來的問題的想法或意見? – George2 2010-06-04 15:40:29
「@@身份應該避免」 - 爲什麼? – George2 2010-06-04 15:41:11