DROP TRIGGER
Synopsis
DROP TRIGGER name [ FROM table ]
引数
name | 削除するトリガの名前。 |
FROM table | オプション — トリガを削除するテーブル。FROM 節を指定しない場合は、対象スキーマ全体で、指定されたトリガが検索されます。 |
概要
DROP TRIGGER 文はトリガを削除します。
特権とロック
DROP TRIGGER コマンドは特権を必要とする操作です。DROP TRIGGER を使用する前に、%DROP_TRIGGER 管理者権限を持っている必要があります。特権がない場合は、SQLCODE -99 エラー (特権違反) が返されます。適切な特権を持っている場合は、GRANT コマンドを使用して %DROP_TRIGGER 特権を割り当てることができます。
埋め込み SQL では、以下のように $SYSTEM.Security.Login()Opens in a new tab メソッドを使用して適切な特権を持ったユーザとしてログインできます。
DO $SYSTEM.Security.Login("_SYSTEM","SYS")
&sql( )
$SYSTEM.Security.Login メソッドを呼び出すには、%Service_Login:Use 特権が必要です。詳細は、"インターシステムズ・クラス・リファレンス" の "%SYSTEM.SecurityOpens in a new tab" を参照してください。
DROP TRIGGER は、テーブル・クラスの定義に [DdlAllowed] が含まれている場合を除き、永続クラスを定義して作成したテーブルでは使用できません。使用すると、操作は SQLCODE -300 エラーで失敗し、%msg が “DDL がクラス schema.tablename に対して有効になっていません” に設定されます。
DROP TRIGGER 文は、table に対してテーブル・レベルのロックを取得します。これにより、他のプロセスはこのテーブルのデータを変更できなくなります。このロックは、DROP TRIGGER 操作が終了すると自動的に解除されます。
FROM 節
トリガとそのテーブルは同じスキーマに存在している必要があります。トリガ名は、修飾、未修飾のどちらでもかまいません。未修飾の場合、既定では、トリガのスキーマは、FROM 節で指定されたテーブルのスキーマになります。FROM 節が存在しないか、テーブル名が未修飾の場合は、トリガのスキーマは既定でシステムの既定スキーマになります。トリガ名とテーブル名が両方とも修飾されている場合は、両方が同じスキーマを指定している必要があります。そうでない場合、Caché は SQLCODE -366 エラーを発行します。
Caché SQL では、トリガ名はスキーマ内の特定のテーブルに関して一意である必要があります。したがって、1 つのスキーマ内に同じ名前のトリガが複数存在する場合があります。オプションの FROM 節は、削除するトリガを決めるために以下のように使用されます。
-
FROM 節が指定されておらず、指定された名前と一致する一意のトリガがスキーマ内で見つかった場合、Caché はそのトリガを削除します。
-
FROM 節が指定され、指定された名前と FROM 節のテーブル名の両方に一致する一意のトリガがスキーマ内で見つかった場合、Caché はそのトリガを削除します。
-
FROM 節が指定されておらず、指定された名前と一致する複数のトリガが見つかった場合、Caché は SQLCODE -365 エラーを発行します。
-
FROM 節で指定されたテーブルに関して指定された名前のトリガが見つからないか、FROM 節が指定されていない場合にスキーマ内でどのテーブルに関しても指定された名前のトリガが見つからない場合、Caché は SQLCODE -363 エラーを発行します。
例
以下の例は、既定スキーマ (通常は SQLUser) 内で任意のテーブルに関連する Trigger_1 という名前のトリガを削除します。
DROP TRIGGER Trigger_1
以下の例は、A スキーマ内で任意のテーブルに関連する Trigger_2 というトリガを削除します。
DROP TRIGGER A.Trigger_2
以下の例は、既定スキーマ内で Patient テーブルに関連する Trigger_3 というトリガを削除します。Trigger_3 という名前のトリガが見つかっても、Patient と関連していなければ、Caché は SQLCODE -363 エラーを発行します。
DROP TRIGGER Trigger_3 FROM Patient
以下の例はすべて、Test スキーマ内で Patient テーブルに関連する Trigger_4 というトリガを削除します。
DROP TRIGGER Test.Trigger_4 FROM Patient
DROP TRIGGER Trigger_4 FROM Test.Patient
DROP TRIGGER Test.Trigger_4 FROM Test.Patient
関連項目
-
"Caché SQL の使用法" の “トリガの使用法“ の章
-
"Caché エラー・リファレンス" にリストされた SQLCODE エラー・メッセージ