删除或禁用 DML 触发器
本主题说明如何使用 SQL Server Management Studio 或 Transact-SQL 在 SQL Server 2012 中删除或禁用 DML 触发器。
本主题内容
开始之前:
建议
安全性
若要删除或禁用 DML 触发器,请使用:
SQL Server Management Studio
Transact-SQL
开始之前
建议
删除了触发器后,它就从当前数据库中删除了。 它所基于的表和数据不会受到影响。 删除表将自动删除其上的所有触发器。
在创建触发器时,触发器默认为启用状态。
禁用触发器不会删除该触发器。 该触发器仍然作为对象存在于当前数据库中。 但是,当执行任意 INSERT、UPDATE 或 DELETE 语句(在其上对触发器进行了编程)时,触发器将不会激发。 已禁用的触发器可以被重新启用。 启用触发器并不是要重新创建它。 触发器将以最初创建它时的方式激发。
安全性
权限
若要删除 DML 触发器,要求对要定义触发器的表或视图具有 ALTER 权限。
若要禁用或启用 DML 触发器,用户必须至少对为其创建触发器的表或视图具有 ALTER 权限。
[Top]
使用 SQL Server Management Studio
删除 DML 触发器
在**“对象资源管理器”**中,连接到数据库引擎实例,再展开该实例。
展开您所需的数据库,再展开**“表”**,然后展开包含要删除的触发器的表。
展开**“触发器”,右键单击要删除的触发器,再单击“删除”**。
在**“删除对象”对话框中,确认要删除的触发器,然后单击“确定”**。
禁用和启用 DML 触发器
在**“对象资源管理器”**中,连接到数据库引擎实例,再展开该实例。
展开您所需的数据库,再展开**“表”**,然后展开包含要禁用的触发器的表。
展开**“触发器”,右键单击要禁用的触发器,再单击“禁用”**。
若要启用触发器,请单击**“启用”**。
[Top]
使用 Transact-SQL
删除 DML 触发器
连接到数据库引擎。
在标准菜单栏上,单击**“新建查询”**。
复制以下示例并将其粘贴到查询窗口中。 执行 CREATE TRIGGER 语句以创建 Sales.bonus_reminder 触发器。 若要删除该触发器,请执行 DROP TRIGGER 语句。
--Create the trigger.
USE AdventureWorks2012;
GO
IF OBJECT_ID(N'Sales.bonus_reminder', N'TR') IS NOT NULL
DROP TRIGGER Sales.bonus_reminder;
GO
CREATE TRIGGER Sales.bonus_reminder
ON Sales.SalesPersonQuotaHistory
WITH ENCRYPTION
AFTER INSERT, UPDATE
AS RAISERROR ('Notify Compensation', 16, 10);
GO
--Delete the trigger.
USE AdventureWorks2012;
GO
IF OBJECT_ID ('Sales.bonus_reminder', 'TR') IS NOT NULL
DROP TRIGGER Sales.bonus_reminder;
GO
禁用和启用 DML 触发器
连接到数据库引擎。
在标准菜单栏上,单击**“新建查询”**。
复制以下示例并将其粘贴到查询窗口中。 执行 CREATE TRIGGER 语句以创建 Sales.bonus_reminder 触发器。 若要禁用和启用该触发器,请分别执行 DISABLE TRIGGER 语句和 ENABLE TRIGGER 语句。
--Create the trigger.
USE AdventureWorks2012;
GO
IF OBJECT_ID(N'Sales.bonus_reminder', N'TR') IS NOT NULL
DROP TRIGGER Sales.bonus_reminder;
GO
CREATE TRIGGER Sales.bonus_reminder
ON Sales.SalesPersonQuotaHistory
WITH ENCRYPTION
AFTER INSERT, UPDATE
AS RAISERROR ('Notify Compensation', 16, 10);
GO
--Disable the trigger.
USE AdventureWorks2012;
GO
DISABLE TRIGGER Sales.bonus_reminder ON Sales.SalesPersonQuotaHistory;
GO
--Enable the trigger.
USE AdventureWorks2012;
GO
ENABLE TRIGGER Sales.bonus_reminder ON Sales.SalesPersonQuotaHistory;
GO
[Top]
请参阅
参考
DISABLE TRIGGER (Transact-SQL)
sys.trigger_events (Transact-SQL)
sys.sql_modules (Transact-SQL)
sys.assembly_modules (Transact-SQL)
sys.server_triggers (Transact-SQL)
sys.server_trigger_events (Transact-SQL)
sys.server_sql_modules (Transact-SQL)
sys.server_assembly_modules (Transact-SQL)