Sql 如何禁用触发器?
如果它是一个数据库级触发器,并且您想专门禁用一个触发器,那么使用Sql 如何禁用触发器?,sql,sql-server,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 DISABLE TRIGGER ALL ON schemaname.tablename; GO 如果它是数据库级触发器,并且您希望禁用
CREATE TRIGGER DEMO_DBLEVELTRIGGER
ON DATABASE
AFTER CREATE_TABLE
AS
BEGIN
PRINT 'CREATION OF NEW TABLES NOT ALLOWED'
ROLLBACK TRANSACTION
END
GO
DISABLE TRIGGER ALL ON schemaname.tablename;
GO
如果它是数据库级触发器,并且您希望禁用一个表上的所有触发器,则使用
DISABLE TRIGGER triggername ON DATABASE;
GO
如果它是数据库级触发器,并且希望禁用该特定数据库中的所有触发器,则使用
CREATE TRIGGER DEMO_DBLEVELTRIGGER
ON DATABASE
AFTER CREATE_TABLE
AS
BEGIN
PRINT 'CREATION OF NEW TABLES NOT ALLOWED'
ROLLBACK TRANSACTION
END
GO
DISABLE TRIGGER ALL ON schemaname.tablename;
GO
如果触发器具有服务器作用域,则使用下面的
DISABLE TRIGGER ALL ON DATABASE;
GO
如果要禁用所有具有服务器作用域的触发器,请使用
CREATE TRIGGER DEMO_DBLEVELTRIGGER
ON DATABASE
AFTER CREATE_TABLE
AS
BEGIN
PRINT 'CREATION OF NEW TABLES NOT ALLOWED'
ROLLBACK TRANSACTION
END
GO
DISABLE TRIGGER ALL ON schemaname.tablename;
GO
DISABLE TRIGGER triggername ON ALL SERVER
您必须谨慎使用ALL
..Docs state
SQL Server在为合并复制而发布的数据库中创建触发器。在已发布的数据库中指定“所有”将禁用这些触发器,从而中断复制。在指定“全部”之前,请验证当前数据库是否未发布以进行合并复制
注意:使用ALTERTRIGGER语句更改触发器将启用触发器 参考文献:
由于它是数据库级触发器,因此必须指定要在数据库上删除触发器 所以不是
DISABLE TRIGGER ALL ON ALL SERVER
做
当然,从您创建它的任何数据库的上下文来看。如果您不是创建它的管理员,那么您就不需要句号。您可能正在寻找一个
DROP TRIGGER DEMO\u DBLEVELTRIGGER
听起来好像有人不希望允许创建新表……我自己在了解新表的过程中触发了它。然而,我所学的课程并没有解释如何禁用它们。我也有管理员权限,当我执行DROP TRIGGER DEMO_DBLEVELTRIGGER时,触发器仍然没有被删除。他想禁用,而不是删除它。他在评论中提到删除它。Wisdow仍然有效;如果需要,只需将drop
替换为disable
;转到我得到的错误是“找不到对象”AdventureWorks2012,因为它不存在或您没有权限