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