我正在使用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