今日の日付以降の場合に行が編集されないように、何らかのトリガーを作成しようとしています(SYSDATEを使用して取得します)。
私はPL/SQLを初めて使用するため、これを行う方法がわかりません。おそらく、カーソルを使用して日付を取得し、関数を使用してブール値をプロシージャに返し、DMLステートメントを何らかの形で停止するある種のパッケージを考えるでしょう。発射?
前もって感謝します
明らかに、ターゲットとして日付列が必要です。SYSDATE を切り捨てると、真夜中になります。したがって、切り捨てられた SYSDATE が別の日付よりも大きい場合、それは少なくとも翌日でなければなりません。
アプリケーション エラーが発生すると、更新が失敗します。複数の行を更新している場合、1 回の失敗ですべての変更がロールバックされることに注意してください。
create or replace trigger your_trg
before update on your_table
for each row
begin
if trunc(sysdate) > :old.whatever_date then
raise_application_error(-20000, 'It is too late to change this record');
end if;
end;
探しているソリューションはVPD 列マスキングです。主にセキュリティ目的で使用される VPD を使用すると、データ アクセスと表示に関する行/列レベルのルールを定義できます。