Блокировка происходит, когда я выполняю хранимую процедуру внутри триггера

У меня есть триггер для выполнения двух процедур.

ALTER TRIGGER [dbo].[TRG_SP_SYNCH_CAB]
   ON [VTBO_INTERFACE].[dbo].[T_TRIGGER_TABLE_FOR_SYNCH]
   INSTEAD OF INSERT
AS 
BEGIN
    -- SET NOCOUNT ON added to prevent extra result sets from
    -- interfering with SELECT statements.
    SET NOCOUNT ON;

    -- Insert statements for trigger here
    INSERT INTO T_TRIGGER_TABLE_FOR_SYNCH (DT) 
    VALUES (GETDATE());

    exec PUMPOMAT_HO.DBO.SP_CM_TransferCAB
    exec PUMPOMAT_HO.DBO.SP_CM_UpdateCAB

END

Время выполнения двух процедур - 5 минут. Когда я пытаюсь вставить значение в таблицу T_TRIGGER_TABLE_FOR_SYNCH, другие мои таблицы, которые используются в хранимых процедурах, блокируются на 5 минут. Но когда я пытаюсь выполнить две процедуры прямо, как

exec SP_CM_TransferCAB
exec SP_CM_UpdateCAB

Блокировка не происходит. Что я должен написать в триггере, чтобы избежать блокировки таблицы.

Благодарю.

1 ответ

Попробуйте, вызвав вторую процедуру внутри (конец) первой процедуры, так как я вижу, что параметры не заданы.

Эта таблица [VTBO_INTERFACE].[dbo].[T_TRIGGER_TABLE_FOR_SYNCH] используется в любой из процедур?

Вы должны попытаться change the design/data flow to mimic this procedure call,

Другие вопросы по тегам