代码之家  ›  专栏  ›  技术社区  ›  Scott

错误的TSQL DISABLE和ENABLE语句

  •  0
  • Scott  · 技术社区  · 16 年前
    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
    

    表示禁用和启用语法错误。为什么?

    2 回复  |  直到 16 年前
        1
  •  1
  •   Martin Smith    16 年前

    您需要一些分号(在前面语句的末尾) DISABLE 在前面陈述的最后 ENABLE

    把隔离设置为 READ UNCOMMITTED 对我来说,这两个都很可疑。

    关于触发器禁用,什么是在触发器禁用时停止另一个修改表的并发事务?

        2
  •  1
  •   SQLMenace    16 年前

    应该是的

    ALTER TABLE Lending.HMDA DISABLE TRIGGER Lending.utrHMDAAudit; 
    
    ALTER TABLE Lending.HMDA ENABLE TRIGGER Lending.utrHMDAAudit;
    

    但你的触发器真的命名为Lending.utrhmdaudit吗?

    阿尔索

    最好在proc调用之后和之前禁用和启用触发器