影響を受けるすべての行をトリガーで取得するにはどうすればよいですか。
sybaseには、deleteおよびupdateステートメント中に影響を受ける行のコピーを格納する「deleted」テーブルがあります。
テーブルレベルのトリガーで同じことを行うOracleのソリューションはありますか?
影響を受けるすべての行をトリガーで取得するにはどうすればよいですか。
sybaseには、deleteおよびupdateステートメント中に影響を受ける行のコピーを格納する「deleted」テーブルがあります。
テーブルレベルのトリガーで同じことを行うOracleのソリューションはありますか?
new
トリガーでold
値を使用できます。
CREATE OR REPLACE TRIGGER trigger_name
BEFORE DELETE OR UPDATE ON table_name
FOR EACH ROW
BEGIN
dbms_output.put('Old: ' || :old.column);
dbms_output.put('New: ' || :new.column);
END;
/
sybaseと同じではありませんが、探しているものです。
ここで詳細情報を見つけることができます。
私がOracleで知っている「削除された」テーブルに類似したものはありません。
何をする必要があるかに応じて、Tim Hallのoracle-baseサイトで説明されているように、複合トリガーを使用して、ステートメントの影響を受ける行に対してセットベースのアクションを実行できます。このアプローチを使用すると、値またはカウントを累積する行レベルのトリガーを定義し、それをトリガーのグローバル部分に格納して、トリガーのAFTER INSERT | UPDATE|DELETEセクションでそれらの値にアクセスできます。グローバルは、すべてのトリガーポイントの全期間にわたって定義されたままです。
ただし、トリガーがこのように複雑になると、コードをアプリケーションパッケージ/プロシージャ/関数に配置するよりも、トリガーベースのソリューションのファンではなくなります。