1

我有一个执行两个程序的触发器。

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

没有锁发生。我应该在触发器中写什么以避免表锁。

谢谢。

4

1 回答 1

0

尝试通过在第一个过程内部(结束)调用第二个过程,因为我看到没有给出任何参数。

该表是否[VTBO_INTERFACE].[dbo].[T_TRIGGER_TABLE_FOR_SYNCH]在任何程序中使用?

你应该尝试change the design/data flow to mimic this procedure call

于 2014-10-15T09:12:51.650 回答