適用対象:SQL Server
Azure SQL Database
Azure SQL Managed Instance
Microsoft Fabric の SQL データベース
1 つ以上の DML トリガーまたは DDL トリガーを現在のデータベースから削除します。
構文
-- Trigger on an INSERT, UPDATE, or DELETE statement to a table or view (DML Trigger)
DROP TRIGGER [ IF EXISTS ] [schema_name.]trigger_name [ ,...n ] [ ; ]
-- Trigger on a CREATE, ALTER, DROP, GRANT, DENY, REVOKE or UPDATE statement (DDL Trigger)
DROP TRIGGER [ IF EXISTS ] trigger_name [ ,...n ]
ON { DATABASE | ALL SERVER }
[ ; ]
-- Trigger on a LOGON event (Logon Trigger)
DROP TRIGGER [ IF EXISTS ] trigger_name [ ,...n ]
ON ALL SERVER
引数
存在する場合
適用対象: SQL Server (SQL Server 2016 (13.x) から現在のバージョンまで、SQL Database)。
条件付きでは既に存在する場合にのみ、トリガーを削除します。
schema_name
DML トリガーが属しているスキーマの名前を指定します。 DML トリガーのスコープは、そのトリガーが作成されたテーブルまたはビューのスキーマです。 DDL トリガーまたはログオン トリガーでは schema_name を指定できません。
trigger_name
削除するトリガーの名前を指定します。 現在作成されているトリガーの一覧を表示するには、sys.server_assembly_modules または sys.server_triggers を使います。
DATABASE
DDL トリガーのスコープが現在のデータベースに適用されることを示します。
DATABASE トリガーの作成または変更時に指定されていた場合は、指定しなければなりません。
全サーバー
適用対象: SQL Server 2008 (10.0.x) 以降。
DDL トリガーのスコープが現在のサーバーに適用されることを示します。 トリガーを作成または変更したときに ALL SERVER を指定した場合は、同じく ALL SERVER を指定する必要があります。 ALL SERVER はログオン トリガーにも適用されます。
Note
このオプションは、包含データベースでは使用できません。
解説
DML トリガーを削除するには、DML トリガー自体またはトリガー テーブルを削除します。 テーブルを削除した場合、関係付けられているすべてのトリガーも削除されます。
トリガーが削除されると、トリガーに関する情報が sys.objects、sys.triggers、および sys.sql_modules カタログ ビューから削除されます。
すべてのトリガーが同一のON節で作成された場合にのみ、1つの 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のDDLTRIGGER権限DATABASEALTERが必要です。
例
A. DML トリガーを削除する
以下の例は、AdventureWorks2025データベースに employee_insupd トリガーを落としています。 (2016 SQL Server(13.x)以降はDROP TRIGGER IF EXISTS構文を使用可能になります。)
IF OBJECT_ID ('employee_insupd', 'TR') IS NOT NULL
DROP TRIGGER employee_insupd;
B. DDL トリガーを削除する
次の例では、DDL トリガー safety を削除します。
重要
DDL トリガーはスキーマ スコープではないため、sys.objects カタログ ビューには表示されません。そのため、それらのトリガーがデータベース内に存在するかどうかを、OBJECT_ID 関数を使用してクエリすることはできません。 スキーマ スコープでないオブジェクトをクエリするには、適切なカタログ ビューを使用する必要があります。 DDL トリガーの場合は、sys.triggers を使ってください。
DROP TRIGGER safety
ON DATABASE;
関連項目
ALTER TRIGGER (Transact-SQL)
CREATE TRIGGER (Transact-SQL)
ENABLE TRIGGER (Transact-SQL)
DISABLE TRIGGER (Transact-SQL)
イベントデータ (Transact-SQL)
DML トリガーに関する情報の取得
sp_help(Transact-SQL)
sp_helptrigger(Transact-SQL)
sys.triggers (Transact-SQL)
システムトリガーイベント (Transact-SQL)
sys.sql_modules(Transact-SQL)
sys.assembly_modules(Transact-SQL)
サーバートリガー (sys.server_triggersTransact-SQL)
sys.server_trigger_events (Transact-SQL) サーバートリガーイベント
sys.server_sql_modules(Transact-SQL)
sys.server_assembly_modules(Transact-SQL)