0

とにかく、日付に基づいて列の値を自動的に変更することはできますか?プロシージャやトリガーを書くような?他のテーブル/列を挿入または更新せずに値を変更する必要があります。

4

1 に答える 1

0

直接ではありません。

DBMS_JOBいずれかを使用してジョブを送信できます。または、バックグラウンドで実行され、将来の時点でDBMS_SCHEDULERを発行します。UPDATE行が挿入または更新されたときにトリガーからジョブを送信できます。

CREATE OR REPLACE TRIGGER trigger_name
  BEFORE INSERT OR UPDATE ON table_name
  FOR EACH ROW
DECLARE
  l_jobno PLS_INTEGER;
BEGIN
  IF :new.status = 'active'
  THEN 
    dbms_job.submit( l_jobno,
                     q'{UPDATE table_name SET status = 'inactive' WHERE table_id = }' || :new.table_id,
                     sysdate + x ); 
  END IF;
END;

もちろん、話している行の数によっては、定義した基準に基づいてテーブルを更新する、数分ごとに実行される単一のジョブを使用する方が適切な場合があります。

于 2012-11-15T03:21:56.993 に答える