错误的TSQL DISABLE和ENABLE语句
表示禁用和启用语法错误。为什么?应该是错误的TSQL DISABLE和ENABLE语句,tsql,triggers,Tsql,Triggers,表示禁用和启用语法错误。为什么?应该是 SET ANSI_NULLS ON SET QUOTED_IDENTIFIER ON GO CREATE PROCEDURE [Lending].[uspHMDAUpdateExport] (@BatchId int, @ModifiedById int) AS BEGIN SET NOCOUNT ON SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED DISABLE TRIGGER Lending
SET ANSI_NULLS ON
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE [Lending].[uspHMDAUpdateExport] (@BatchId int, @ModifiedById int)
AS
BEGIN
SET NOCOUNT ON
SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED
DISABLE TRIGGER Lending.utrHMDAAudit ON Lending.HMDA
UPDATE Lending.HMDA SET IsExported = 1,ModifiedById = @ModifiedById WHERE BatchId = @BatchId
ENABLE TRIGGER Lending.utrHMDAAudit ON Lending.HMDA
END
SET QUOTED_IDENTIFIER OFF
GO
GRANT EXECUTE ON [Lending].[uspHMDALarInfoGet] TO [caApplication] AS [dbo]
GO
但是你的触发器真的命名为Lending.utrhmdaudit吗
也
你知道如果你的更新在进程中失败,触发器将被禁用,对吗?您的进程没有任何错误处理,违反约束将中止批处理,并且您的触发器被禁用
最好在proc调用之后和之前禁用和启用触发器,您需要一些分号(在disable
之前的语句末尾和enable
之前的语句末尾)
另一方面,将隔离设置为readuncommitted
和禁用触发器对我来说显然是可疑的
在这种情况下,隔离级别似乎不会对以下语句产生任何影响,那么,在您的所有过程中,这是标准做法吗?如果是的话,您是否意识到它的潜在问题
关于触发器禁用,当触发器被禁用时,如何停止另一个修改表的并发事务?可能
[Lending]
不是触发器的正确模式?从那些希望审计数据的人的角度来看,禁用审计触发器通常是一个糟糕的想法。为什么要禁用它?根据MSDN,不需要ALTER TABLE:
ALTER TABLE Lending.HMDA DISABLE TRIGGER Lending.utrHMDAAudit;
ALTER TABLE Lending.HMDA ENABLE TRIGGER Lending.utrHMDAAudit;