2

影響を受けるすべての行をトリガーで取得するにはどうすればよいですか。

sybaseには、deleteおよびupdateステートメント中に影響を受ける行のコピーを格納する「deleted」テーブルがあります。

sybaseのドキュメント

テーブルレベルのトリガーで同じことを行うOracleのソリューションはありますか?

4

2 に答える 2

1

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と同じではありませんが、探しているものです。

ここで詳細情報を見つけることができます。

于 2012-11-13T14:21:37.083 に答える
1

私がOracleで知っている「削除された」テーブルに類似したものはありません。

何をする必要があるかに応じて、Tim Hallのoracle-baseサイトで説明されているように、複合トリガーを使用して、ステートメントの影響を受ける行に対してセットベースのアクションを実行できます。このアプローチを使用すると、値またはカウントを累積する行レベルのトリガーを定義し、それをトリガーのグローバル部分に格納して、トリガーのAFTER INSERT | UPDATE|DELETEセクションでそれらの値にアクセスできます。グローバルは、すべてのトリガーポイントの全期間にわたって定義されたままです。

ただし、トリガーがこのように複雑になると、コードをアプリケーションパッケージ/プロシージャ/関数に配置するよりも、トリガーベースのソリューションのファンではなくなります。

于 2012-11-13T20:12:59.633 に答える