我有一个触发器在非生产中触发未触发问题,但相同的确切代码在生产中未能触发。我已经证实它没有被禁用,我已经做了一个跟踪,看它甚至没有执行生产..我已经检查了相关的OBJECTPROPERTY
元素,它们是相同的。我已经确认代码是一样的。我已经确认相同的插件来自应用程序。下面是这个触发代码:触发器未在生产中触发,但在非生产中触发
/******
Object: Trigger [dbo].[tr_trigger_ins]
Script Date: 06/02/2012 16:51:51
******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER OFF
GO
CREATE TRIGGER [dbo].[tr_trigger_ins] ON [dbo].[table_1]
FOR INSERT
AS
BEGIN
UPDATE table_2
SET col_1 =
CASE
WHEN i.col_2 = '0' THEN 0 ELSE 1
END
FROM INSERTED i
INNER JOIN table_3 pa
ON i.col_3 = pa.col_3 AND pa.col_4 = 'ispublic'
INNER JOIN table_4 pp
ON i.col_5 = pp.col_5
INNER JOIN table_2 cs
ON pp.col_6 = cs.col_6
END
GO
下面是一个触发器是的,而不是插入的是在两个环境中执行相同的表:
/******
Object: Trigger [dbo].[tr_trigger_before_ins]
Script Date: 06/02/2012 16:55:52
******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER OFF
GO
CREATE TRIGGER [dbo].[tr_trigger_before_ins] ON [dbo].[table_1]
INSTEAD OF INSERT
AS
BEGIN
INSERT INTO table_1
SELECT * FROM INSERTED
WHERE col_3 in (73, 199)
END
GO
任何帮助是极大的赞赏。
你是什么意思的“相同的插入”?这是否意味着正在插入完全相同的数据?我的意思是,你的'INSTEAD OF'触发器有'col_3'的条件。您是否验证过插入的行是否符合条件? –
我已经确认这些行匹配正在执行的条件,并且我没有插入任何相同的数据,但是这第二个触发器阻止数据进入与条件不匹配 – Russ960
您是否检查数据库上是否允许递归触发器水平?我没有尝试,但对我来说,似乎合乎逻辑的是,如果递归触发器选项处于打开状态,则反向触发器只会在触发器运行后才允许运行。 –