Skip to main content

This is documentation for Caché & Ensemble. See the InterSystems IRIS version of this content.Opens in a new tab

For information on migrating to InterSystems IRISOpens in a new tab, see Why Migrate to InterSystems IRIS?

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

関連項目

FeedbackOpens in a new tab