DROP TRIGGER (Transact-SQL)
1 つ以上の DML トリガ、DDL トリガ、またはログオン トリガを現在のデータベースから削除します。
構文
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.triggers (Transact-SQL)」を参照してください。
- DATABASE
DDL トリガのスコープが現在のデータベースに適用されることを示します。トリガを作成または変更したときに DATABASE を指定した場合は、同じく DATABASE を指定する必要があります。
- ALL SERVER
DDL トリガまたはログオン トリガのスコープが現在のサーバーに適用されることを示します。トリガを作成または変更したときに ALL SERVER を指定した場合は、同じく ALL SERVER を指定する必要があります。
解説
DML トリガを削除するには、DML トリガ自体またはトリガ テーブルを削除します。テーブルを削除した場合、関係付けられているすべてのトリガも削除されます。
トリガが削除されると、トリガに関する情報が sys.objects、sys.triggers、および sys.sql_modules カタログ ビューから削除されます。
すべてのトリガが同一の ON 句で作成されている場合のみ、DROP TRIGGER ステートメントごとに複数の DDL トリガを削除できます。
トリガの名前を変更するには、DROP TRIGGER と CREATE TRIGGER を使用します。トリガの定義を変更するには、ALTER TRIGGER を使用します。
特定のトリガの従属性を確認する方法の詳細については、「sp_depends (Transact-SQL)」および「sys.sql_dependencies (Transact-SQL)」を参照してください。
トリガのテキストを表示する方法の詳細については、「sp_helptext (Transact-SQL)」および「sys.sql_modules (Transact-SQL)」を参照してください。
既存のトリガを一覧表示する方法の詳細については、「sys.triggers (Transact-SQL)」および「sys.server_triggers」を参照してください。
権限
DML トリガを削除するには、そのトリガが定義されているテーブルまたはビューに対する ALTER 権限が必要です。
サーバー スコープ (ON ALL SERVER) で定義されている DDL トリガ、またはログオン トリガを削除するには、サーバーでの CONTROL SERVER 権限が必要です。データベース スコープ (ON DATABASE) で定義されている DDL トリガを削除するには、現在のデータベースでの ALTER ANY DATABASE DDL TRIGGER 権限が必要です。
例
A. DML トリガを削除する
次の例では、employee_insupd
トリガを削除します。
USE AdventureWorks;
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 AdventureWorks;
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.objects (Transact-SQL)
sys.triggers (Transact-SQL)
sys.trigger_events (Transact-SQL)
sys.sql_modules (Transact-SQL)
sys.assembly_modules (Transact-SQL)
sys.server_triggers
sys.server_trigger_events
sys.server_sql_modules
sys.server_assembly_modules (Transact-SQL)
その他の技術情報
DML トリガに関する情報の取得
DDL トリガに関する情報の取得
ヘルプおよび情報
変更履歴
リリース | 履歴 |
---|---|
2006 年 12 月 12 日 |
|