オラクルトリガーを作成する方法と使用方法
Oracle トリガーを作成する構文は以下のとおりです。
CREATE [OR REPLACE] TRIGGER trigger_name
{BEFORE | AFTER | INSTEAD OF} {event(s)}
ON table_name
[REFERENCING OLD AS old NEW AS new]
[FOR EACH ROW]
[WHEN (condition)]
DECLARE
-- 声明变量
BEGIN
-- 执行逻辑
EXCEPTION
-- 异常处理
END;
ここでは、キーワードを次のように定義します。
- CREATE OR REPLACE: トリガーが既に存在する場合は、以前のトリガーを置換します。
- トリガー名
- トリガーの実行タイミングで、操作の前、後、代わりに実行することを表します。
- トリガーのイベントには、INSERT/UPDATE/DELETEなどが含まれます。
- trigger 対象のテーブル名。
- Trigger 内で古い値と新しい値のエイリアスを参照します。
- 各行について: トリガーがデータの各行に対して実行されることを示します。
- WHEN(条件):トリガーの条件。条件が満たされた場合のみトリガーします。
- トリガーで使用される変数を宣言する。
- トリガーの実行ロジック
- トリガーの例外処理のロジック。
データ挿入時にトリガーを作成する例を次に示します。
CREATE OR REPLACE TRIGGER insert_trigger
BEFORE INSERT
ON employees
FOR EACH ROW
BEGIN
-- 执行逻辑,如插入当前时间
:NEW.insert_date := SYSDATE;
END;
トリガーを利用すれば、関連するテーブルだけで処理するだけでよい。例えば、上記の例のデータ挿入は次のようにできる。
INSERT INTO employees (employee_id, first_name, last_name, hire_date)
VALUES (1, 'John', 'Doe', SYSDATE);
挿入が完了するとトリガーが自動的に関連ロジックを実行し、現在の時刻をinsert_dateフィールドに挿入します。
トリガーの使用は注意深く行う必要があります。トリガーが多すぎたり複雑すぎると、データベースのパフォーマンスに影響が出ることがあります。