タイトルは少し混乱することができます - 私は...深いダウン、ここで詳細になりますは、各タスクのためのOracleのテーブルに非ユニークキーの一意性を強制する方法を
単純化されたログテーブル想像:
run_id | step_id | result |
--------------------------------
1 | 1 | done |
1 | 2 | done |
1 | 3 | done |
1 | 4 | done |
2 | 1 | failed |
3 | 1 | done |
3 | 2 | done |
を
しかし、同時に2つのジョブ(run_id 1と2)を実行すると、run_idを共有してしまいますが、これは正しくありません!!
は、私は明らかに..別々のIDを持っている各ジョブのためにしたい:)
オラクル(PL/SQL - ほとんどのパッケージ)にそれを強制する方法は非常に同じ時間(つまり、午前6時)から始まる仕事のため..
ご存知ですか?このような状況をどうやって解決するのですか?ユニークなインデックスを作成すると(run_id、step_id)どうすればいいですか? 「第2の」仕事は失敗するでしょうか?それとも自動的に値をインクリメントするのでしょうか?
SELECT nvl(max(run_id), 0)+1 INTO v_run_id
FROM my_schema.log_table;
これは、新しい値を取得し、コードです...しかし、それは
上記THX
EDITとしてので...と、動作しません:私は思っ回避策として 文字列と日付を使用して... START_DATEと文字列定数(代わりにRUN_IDのrun_name)を使用することについて...ので、表には、これは仕事ができる
run_name | run_date | step_id | result |
--------------------------------------------------------
my_job#1 | 1/1/2016 7:00:00 AM | 1 | done |
my_job#1 | 1/1/2016 7:00:00 AM | 2 | done |
my_job#1 | 1/1/2016 7:00:00 AM | 3 | done |
my_job#1 | 1/1/2016 7:00:00 AM | 4 | done |
my_job#2 | 1/1/2016 7:00:00 AM | 1 | failed |
my_job#1 | 1/2/2016 7:00:00 AM | 1 | done |
my_job#1 | 1/2/2016 7:00:00 AM | 2 | done |
のように見えることができます..私はちょうどCURていますIDでそれを行う方法
正確に:)偉大な...答えた!どうもありがとうございました –