Я использую SQL Server 2008 Enterprise.Я пытался, что если я установлю когда-либо увеличение журнала транзакций SQL Server для связанной базы данных (без параметров резервного копирования), то один оператор удаления этой хранимой процедуры вызовет взаимоблокировку, если выполняется несколькими потоками одновременно?Есть идеи, почему?
Для оператора delete Param1 - это столбец таблицы FooTable, Param1 - это внешний ключ другой таблицы (относится к другому столбцу кластеризованного индекса первичного ключа другой таблицы).Для самой таблицы Param1 нет индекса для таблицы FooTable.FooTable имеет другой столбец, который используется как кластерный первичный ключ, но не столбец Param1.
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