我有一個觸發器在非生產中觸發未觸發問題,但相同的確切代碼在生產中未能觸發。我已經證實它沒有被禁用,我已經做了一個跟蹤,看它甚至沒有執行生產..我已經檢查了相關的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
您是否檢查數據庫上是否允許遞歸觸發器水平?我沒有嘗試,但對我來說,似乎合乎邏輯的是,如果遞歸觸發器選項處於打開狀態,則反向觸發器只會在觸發器運行後才允許運行。 –