Oracle環境(SQLPLUSを使用)。私の質問は、新しく挿入されたタプルのデータを変更する方法です。 ここでは例を示します。属性 "weight"が100より大きい場合、その別の属性 "size_level"は1でなければなりません。そうでなければ(< = 100)、 size_levelは0にする必要があります。 これを行うために、私はストアドプロシージャを呼び出す必要があると考えました。トリガから呼び出されたSQLプロシージャ
CREATE OR REPLACE TRIGGER new_ship_trigger
AFTER INSERT ON Orders
FOR EACH ROW
BEGIN ATOMIC
CALL UpdateShipSizeLevel(:new)
END;
/
ストアドプロシージャの部分のコードはどのように書くべきですか?または、カーソルが必要なのでしょうか? "Orders"テーブルに制約を追加しないでください。複数のトリガーを使用する必要はありません。
これは正しいですが、これは正しいです... – Codexer
@zagglerはい、あります。 – tic30
1)しばしば、テーブルにヒットする前に値を変更または追加するために使用できる 'BEFORE INSERT'トリガを行うことができます。 2)また、 'size_level'は_derived_情報です。通常は保存しないでください(避けることができれば)。それをビューの一部として定義できるだけかもしれません。それ以外の場合は、パフォーマンスが必要な場合は、計算列を考慮してください。 –