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 权限。

原文地址:https://www.cnblogs.com/linybo/p/10794500.html

时间: 2024-10-10 04:24:09

SQL Server触发器的禁用和启用的相关文章

SQL Server触发器

触发器是一种特殊类型的存储过程,它不同于之前的我们介绍的存储过程.触发器主要是通过事件进行触发被自动调用执行的.而存储过程可以通过存储过程的名称被调用. Ø 什么是触发器 触发器对表进行插入.更新.删除的时候会自动执行的特殊存储过程.触发器一般用在check约束更加复杂的约束上面.触发器和普通的存储过程的区别是:触发器是当对某一个表进行操作.诸如:update.insert.delete这些操作的时候,系统会自动调用执行该表上对应的触发器.SQL Server 2005中触发器可以分为两类:DM

SQL Server 触发器 转http://www.cnblogs.com/hoojo/archive/2011/07/20/2111316.html

SQL Server 触发器 触发器是一种特殊类型的存储过程,它不同于之前的我们介绍的存储过程.触发器主要是通过事件进行触发被自动调用执行的.而存储过程可以通过存储过程的名称被调用. Ø 什么是触发器 触发器对表进行插入.更新.删除的时候会自动执行的特殊存储过程.触发器一般用在check约束更加复杂的约束上面.触发器和普通的存储过程的区别是:触 发器是当对某一个表进行操作.诸如:update.insert.delete这些操作的时候,系统会自动调用执行该表上对应的触发器.SQL Server 2

15、SQL Server 触发器

SQL Server 触发器 触发器是一种特殊的存储过程,只有当试图用数据操作语言DML来修改数据时才会触发,DML包含对视图和表的增.删.改. 触发器分为DML触发器和DDL触发器,其中DML触发器会对数据表,视图进行insert.update.delete的时候触发.DDL则是create.alter.drop等时触发. DML触发器又分为after(之后触发)和insert of(之前触发)触发器. 如果在创建触发器的时候不指定类型,则默认是after触发器. 触发器有两个虚拟的临时表:插

(转)SQL Server 触发器

SQL Server 触发器 触发器是一种特殊类型的存储过程,它不同于之前的我们介绍的存储过程.触发器主要是通过事件进行触发被自动调用执行的.而存储过程可以通过存储过程的名称被调用. Ø 什么是触发器 触发器对表进行插入.更新.删除的时候会自动执行的特殊存储过程.触发器一般用在check约束更加复杂的约束上面.触发器和普通的存储过程的区别是:触发器是当对某一个表进行操作.诸如:update.insert.delete这些操作的时候,系统会自动调用执行该表上对应的触发器.SQL Server 20

如何编写sql server 触发器详解

在SQL Server里面也就是对某一个表的一定的操作,触发某种条件,从而执行的一段程序.触发器是一个特殊的存储过程.常见的触发器有三种:分别应用于Insert , Update , Delete 事件. 编写之前要了解一个关键知识.触发器用到的两个临表:Deleted , Inserted . Deleted 和 Inserted 分别存储触发事件表的"旧的一条记录"和"新的一条记录". 一个Update 的过程可以看作为:生成新的记录到Inserted表,复制旧

自己写的sql server触发器练练--高手请您跳过吧

set ANSI_NULLS ONset QUOTED_IDENTIFIER ONgo ALTER TRIGGER [insertReplyToic] ON [dbo].[bbsReplyTopic] AFTER insertAS BEGIN --SET NOCOUNT ON; -- Insert statements for trigger here declare @uid int,@topicId int,@Rcontent nvarchar(max),@Rtime datetime,@c

SQL Server触发器创建、删除、修改、查看示例步骤

SQL Server触发器创建.删除.修改.查看示例步骤 一﹕ 触发器是一种特殊的存储过程﹐它不能被显式地调用﹐而是在往表中插入记录﹑更新记录或者删除记录时被自动地激活.所以触发器可以用来实现对表实施复杂的完整性约`束. 二﹕ SQL Server为每个触发器都创建了两个专用表﹕Inserted表和Deleted表.这两个表. 一﹕ 触发器是一种特殊的存储过程﹐它不能被显式地调用﹐而是在往表中插入记录﹑更新记录或者删除记录时被自动地激活.所以触发器可以用来实现对表实施复杂的完整性约`束.    

Sql Server 触发器的应用

Sql Server 触发器:指的是 在进行  Insert .Update.Delete时 所执行的操作 我们可以在进行增删改操作的同时对其他数据进行操作.其实触发器算是一种存储过程,只不过执行的机制 只是在进行增删改操作时执行: 应用场景: 需求: 由于业务的需要,需要做一个统计报表,根据角色不同展示相应的四个系统的设备数据:   如果按照查询各个库中设备的数据汇总到一块,这样查询效率很低: 解决方案: 创建一个设备统计表: 使用SQL Server触发器,每增加.删除 设备数据时,同时触发

SQL SERVER 触发器介绍

什么是触发器 触发器对表进行插入.更新.删除的时候会自动执行的特殊存储过程.触发器一般用在check约束更加复杂的约束上面.触发器和普通的存储过程的区别是:触发器是当对某一个表进行操作.诸如:update.insert.delete这些操作的时候,系统会自动调用执行该表上对应的触发器.SQL Server 2005中触发器可以分为两类:DML触发器和DDL触发器,其中DDL触发器它们会影响多种数据定义语言语句而激发,这些语句有create.alter.drop语句. DML触发器分为: 1. a