這個問題是非常相似的SQL Server 2005: T-SQL to temporarily disable a triggerMSSQL:禁用觸發一個INSERT
不過我不想禁用所有觸發器和甚至不是一個批處理命令的,但只是一個單一的INSERT。
我不得不面對一個商店系統,原始作者將一些應用邏輯放入觸發器(壞主意!)。只要您不嘗試以與原始「管理前端」不同的方式插入數據,該應用程序邏輯就可以正常工作。我的工作是編寫一個「從分期系統導入」工具,所以我準備好了所有數據。當我嘗試插入它時,觸發器會用生成的代碼覆蓋現有的產品代碼(不是IDENTITY數字ID!)。爲了生成代碼,它使用插入到另一個表的自動生成的ID,這樣我甚至不能使用@@ IDENTITY來查找我剛插入的列,並使用實際的產品代碼更新插入的行。
任何我可以去避免極端笨拙的代碼的方式(在產品名稱中插入一些隨機字符,然後嘗試用隨機字符來查找行來更新它)。
因此:是否有一種方法來禁用觸發器(即使只是一個)只有一個 INSERT?
Kristof的文章有幾個解決方案,看起來像他們可能實際上解決您的問題 - 只是想讓你知道,如果你打開改變你接受的答案。 – SqlRyan 2010-01-06 17:46:08