• SQL Server触发器的禁用和启用


    1)ENABLE | DISABLE语句

    语法(sql server 2008以上)

    {ENABLE | DISABLE} TRIGGER { [ schema_name . ] trigger_name [ ,...n ] | ALL } 
    ON { object_name | DATABASE | ALL SERVER } [ ; ] 

    schema_name:触发器所属架构的名称。schema_name不能指定DDL或登录触发器。

    trigger_name:要启用或禁用的触发器的名称。

    ALL:指示启用在ON子句作用域中定义的所有触发器。(SQL Server在为合并复制发布的数据库中创建触发器。在已发布数据库中指定ALL可禁用这些触发器,这样会中断复制。在指定ALL之前,请验证没有为合并复制发布当前数据库。)

    object_name:是的名称的表或试图在其触发DML trigger_name已创建以执行。

    DATABASE:DDL触发器,该值指示trigger_name已创建或修改与数据库作用域执行。

    ALL SERVER:DDL触发器,该值指示trigger_name已创建或修改要执行与服务器作用域。ALL SERVER也适用于登录触发器。

    示例

    A.在表中启用或禁用DML触发器

    禁用在表uAddress中创建的触发器Address,然后再启用它。

    disable trigger person.uAddress on Person.Address;
    go
    enable trigger Person.uAddress on Person.Address;
    go

    B.启用或禁用DDL触发器

    在数据库范围,禁用DDL触发器safety,然后再启用它。

    disable trigger safety on database;
    go
    enable trigger safety on database;
    go

    C.启用或禁用以同一作用域定义的所有触发器

    启用或禁用在服务器作用域级别创建的所有的DDL触发器。

    enable trigger all on all server;
    go
    disable trigger all on all server;
    go

    2)ALTER TRIGGER语句

    --禁用
    alter table tablename disable trigger triggername;
    --启用
    alter table tablename enable trigger triggername;
    go
     
    --禁用某张表上的所有触发器
    alter table tablename disable trigger all;
    go
    --启用某张表上的所有触发器
    alter table tablename enable trigger all;
     
    --禁用所有表上的所有触发器
    exec sp_msforeachtable 'alter table ? disable trigger all'
    --启用所有表上的所有触发器
    exec sp_msforeachtable 'alter table ? enable trigger all'
    
    --查看约束
    select name , is_disabled from sys.foreign_keys order by name
    
    --启用or禁用指定表所有外键约束   
    alter table tbname  NOCHECK constraint all  
    alter table tbname  CHECK constraint all

     

    3)Permissions

    若要启用或禁用DML 触发器,用户必须至少对于创建触发器所在的表或视图拥有 ALTER 权限。

    若要启用或禁用具有服务器作用域 (ON ALL SERVER) 的 DDL 触发器或登录触发器,用户必须对服务器具有 CONTROL SERVER 权限。 若要启用具有数据库范围 (ON DATABASE) 的 DDL 触发器,用户至少应在当前数据库中拥有 ALTER ANY DATABASE DDL TRIGGER 权限。

     
     
  • 相关阅读:
    Grafana+Prometheus监控mysql性能
    性能测试监控平台Grafana的使用
    搭建grafana+telegraf+influxdb服务器性能监控平台
    cocos2d-x jsb 防止触摸事件传递
    web app 相关记录
    如何在Teamcenter中使用PMI?
    浅谈人机工程应用在数字化工艺中的作用
    关于奇葩说
    一些感想
    关于起名
  • 原文地址:https://www.cnblogs.com/linybo/p/10794500.html
Copyright © 2020-2023  润新知