0


0

値を保持するOracleトリガー

「N」以外に設定されないことを保証できるようにする必要がある列があります-トリガーはこれに最適なソリューションだと思いましたが、そのようにする方法を見つけることができないようです列が「N」以外に設定されるたびに、「N」にリセットします

任意のポインタ?

編集:Yに変更する可能性のあるアプリケーションは私の制御の範囲外であり、Yに設定するときにエラーが発生したくないので、制約を行いたくありません、受動的に設定したいだけですファンファーレなしでNに戻ります。

3 Answer


2


トリガーではなく列制約をお勧めします。 追跡とデバッグが容易になります。 しかし、Nまたはnull以外の値に設定できないことを意味すると思いますか? そうでない場合、値が常に「N」である場合、なぜわざわざ保存するのですか?


1


おそらくこのようなものです。 私はそれが悪い考えであることを知っています、そして、それはあなたを悩ませるために戻ってきます。 また、私はここ数年でOracleをやったことがありませんが、これで始めることができます。

create or replace trigger trg_special_col before update on AnnoyingTable
for each row
begin
  :new.special_col := 'N';
end;


0


最も簡単な方法(ビューを作成するオプションが開かれている場合)は、テーブルにビューを提供し、ビュー内で問題の列の値を静的な値「N」に設定することです。 ビューに値を保持します。