Share via


DROP TRIGGER (Transact-SQL)

1 つ以上の DML トリガーまたは DDL トリガーを現在のデータベースから削除します。

トピック リンク アイコン Transact-SQL 構文表記規則

構文

Trigger on an INSERT, UPDATE, or DELETE statement to a table or view (DML Trigger)
DROP TRIGGER [schema_name.]trigger_name [ ,...n ] [ ; ]

Trigger on a CREATE, ALTER, DROP, GRANT, DENY, REVOKE or UPDATE statement (DDL Trigger)
DROP TRIGGER trigger_name [ ,...n ] 
ON { DATABASE | ALL SERVER } 
[ ; ]

Trigger on a LOGON event (Logon Trigger)

DROP TRIGGER trigger_name [ ,...n ] 
ON ALL SERVER 

引数

  • schema_name
    DML トリガーが属しているスキーマの名前を指定します。 DML トリガーのスコープは、そのトリガーが作成されたテーブルまたはビューのスキーマです。 schema_name は、DDL トリガーまたはログオン トリガーに対しては指定できません。

  • trigger_name
    削除するトリガーの名前を指定します。 現在作成されているトリガーの一覧を表示するには、sys.server_assembly_modules または sys.server_triggers を使用してください。

  • DATABASE
    DDL トリガーのスコープが現在のデータベースに適用されることを示します。 トリガーを作成または変更したときに DATABASE を指定した場合は、同じく DATABASE を指定する必要があります。

  • ALL SERVER
    DDL トリガーのスコープが現在のサーバーに適用されることを示します。 トリガーを作成または変更したときに ALL SERVER を指定した場合は、同じく ALL SERVER を指定する必要があります。 ALL SERVER はログオン トリガーにも適用されます。

    注意

    このオプションは、包含データベースでは使用できません。

説明

DML トリガーを削除するには、DML トリガー自体またはトリガー テーブルを削除します。 テーブルを削除した場合、関係付けられているすべてのトリガーも削除されます。

トリガーが削除されると、トリガーに関する情報が sys.objectssys.triggers、および sys.sql_modules カタログ ビューから削除されます。

すべてのトリガーが同一の ON 句で作成されている場合のみ、DROP TRIGGER ステートメントごとに複数の DDL トリガーを削除できます。

トリガーの名前を変更するには、DROP TRIGGER と CREATE TRIGGER を使用します。 トリガーの定義を変更するには、ALTER TRIGGER を使用します。

特定のトリガーの従属性を確認する方法の詳細については、「sys.sql_expression_dependencies」、「sys.dm_sql_referenced_entities (Transact-SQL)」、および「sys.dm_sql_referencing_entities (Transact-SQL)」を参照してください。

トリガーのテキストを表示する方法の詳細については、「sp_helptext (Transact-SQL)」および「sys.sql_modules (Transact-SQL)」を参照してください。

既存のトリガーを一覧表示する方法の詳細については、「sys.triggers (Transact-SQL)」および「sys.server_triggers (Transact-SQL)」を参照してください。

権限

DML トリガーを削除するには、そのトリガーが定義されているテーブルまたはビューに対する ALTER 権限が必要です。

サーバー スコープ (ON ALL SERVER) で定義されている DDL トリガー、またはログオン トリガーを削除するには、サーバーでの CONTROL SERVER 権限が必要です。 データベース スコープ (ON DATABASE) で定義されている DDL トリガーを削除するには、現在のデータベースでの ALTER ANY DATABASE DDL TRIGGER 権限が必要です。

使用例

A. DML トリガーを削除する

次の例では、employee_insupd トリガーを削除します。

USE AdventureWorks2012;
GO
IF OBJECT_ID ('employee_insupd', 'TR') IS NOT NULL
   DROP TRIGGER employee_insupd;
GO

B. DDL トリガーを削除する

次の例では、DDL トリガー safety を削除します。

重要な注意事項重要

DDL トリガーはスキーマ スコープではないため、sys.objects カタログ ビューには表示されません。そのため、それらのトリガーがデータベース内に存在するかどうかを、OBJECT_ID 関数を使用してクエリすることはできません。 スキーマ スコープでないオブジェクトをクエリするには、適切なカタログ ビューを使用する必要があります。 DDL トリガーの場合は、sys.triggers を使用してください。

USE AdventureWorks2012;
GO
IF EXISTS (SELECT * FROM sys.triggers
    WHERE parent_class = 0 AND name = 'safety')
DROP TRIGGER safety
ON DATABASE;
GO

関連項目

参照

ALTER TRIGGER (Transact-SQL)

CREATE TRIGGER (Transact-SQL)

ENABLE TRIGGER (Transact-SQL)

DISABLE TRIGGER (Transact-SQL)

EVENTDATA (Transact-SQL)

sp_help (Transact-SQL)

sp_helptrigger (Transact-SQL)

sys.triggers (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)

概念

DML トリガーに関する情報の取得