如何禁用触发器?

时间:2017-09-14 16:30:08

标签: sql sql-server

CREATE TRIGGER DEMO_DBLEVELTRIGGER
ON DATABASE
AFTER CREATE_TABLE
AS
BEGIN
PRINT 'CREATION OF NEW TABLES NOT ALLOWED'
ROLLBACK TRANSACTION
END
GO

2 个答案:

答案 0 :(得分:2)

如果它是数据库级别触发器并且您想要专门禁用一个触发器,则使用

Uncaught TypeError: _requestApi.RequestApi.fetch is not a function

如果它是数据库级别触发器并且您想要禁用一个表上的所有触发器,则使用

DISABLE TRIGGER triggername ON DATABASE;  
GO  

如果它是数据库级别触发器并且您要禁用该特定数据库中的所有触发器,则使用

DISABLE TRIGGER ALL ON schemaname.tablename;
GO  

如果触发器具有服务器范围,则使用下面的

DISABLE TRIGGER ALL ON DATABASE;  
GO  

如果要禁用具有服务器范围的所有触发器,请使用

DISABLE TRIGGER triggername ON ALL SERVER

你必须谨慎使用DISABLE TRIGGER ALL ON ALL SERVER ..Docs state ..

  

SQL Server在为合并复制发布的数据库中创建触发器。在已发布的数据库中指定ALL将禁用这些会中断复制的触发器。在指定ALL之前,验证是否未发布当前数据库以进行合并复制。

注意:
使用ALTER TRIGGER语句更改触发器将启用触发器

<强>参考文献:
DISABLE TRIGGER

答案 1 :(得分:0)

由于它是数据库级别触发器,您必须指定在数据库中删除触发器

所以不是......

drop trigger DEMO_DBLEVELTRIGGER

DO

drop trigger DEMO_DBLEVELTRIGGER on database

当然,从您创建它的任何数据库的上下文开始。