我有一个执行两个程序的触发器。
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
没有锁定发生。我应该在触发器中写什么以避免表锁。
感谢。
答案 0 :(得分:0)
尝试通过调用第一个过程内部(结束)的第二个过程,因为我看不到给出参数。
此表[VTBO_INTERFACE].[dbo].[T_TRIGGER_TABLE_FOR_SYNCH]
是否在任何程序中使用?
您应该尝试change the design/data flow to mimic this procedure call
。