行は影響しない競合が-ことができ、私はDATA_IDpostgresqlの私はテーブルを持っている二度目
に自動ナンバリング/配列を有しtabledata
---------
data_id [PK]
data_code [Unique]
data_desc
コード例:
insert into tabledata(data_code,data_desc) values(Z01,'red')
on conflict (data_code) do update set data_desc=excluded.data_desc
が正常に動作し、その後、私は挿入再び
insert into tabledata(data_code,data_desc) values(Z01,'blue')
on conflict (data_code) do update set data_desc=excluded.data_desc
私はこのエラーを得た
[Err] ERROR: ON CONFLICT DO UPDATE command cannot affect row a second time HINT: Ensure that no rows proposed for insertion within the same command have duplicate constrained values.
これは私の実際のコード
insert into psa_aso_branch(branch_code,branch_desc,regional_code,status,created_date,lastmodified_date)
(select branch_code, branch, kode_regional,
case when status_data='Y' then true
else false end, current_date, current_date
from branch_history) on conflict (branch_code) do
update set branch_desc = excluded.branch_desc, regional_code = excluded.regional_code,status = (case when excluded.status='Y' then true else false end), created_date=current_date, lastmodified_date=current_date;
最初に細かい作業ではなく、次のものである(例のように、私は前にあなたを与える)
「data_desc」が唯一の一意の属性ではないため、なぜあなたは 'set data_desc = excluded.data_desc'ですか? –
クエリに構文エラーがあり、同じテーブル。これらを修正した後、彼らは働いています:http://rextester.com/NMCXR16182 - しかし、エラーメッセージはあなたが異なるものを実行していることを示唆しています:http://stackoverflow.com/questions/35949877/how-to-include -excluded-rows-in-conflict-on-conflict-on-on-conflictのコード – pozs
はすでにコードを編集していますが、リンク上ではうまく動作しますが、私のコードは実際には少し異なりますが、 –