に違反することなく、2つのDB行をスワップIテーブルregionkey
を有します。この表には、ユニーク制約を持つ(region、locale)の索引があります。制約
101 MICH DETR
102 ILLI CHIC
そして私はと巻き上げるように、私は、それらの間(地域、ロケール)フィールドを交換する必要があります:
101 ILLI CHIC
102 MICH DETR
の問題は、私は2つのレコードを持っているということです地域やロケールの一意のインデックスに違反しているため、素朴なアプローチはうまくいかないでしょう。
update regionkey
set region='ILLI', locale='CHIC' where areaid = 101; -- FAILS
update regionkey
set region='MICH', locale='DETR' where areaid = 102;
どうすればいいですか?スワップを作るためのアトミックな方法はありますか?提案?
これは機能するにはちょっと狂っているかもしれません。あなたは彼がそれを取引で包むべきだと思いますか? – Broam
とにかく1つのインサートが暗黙的なトランザクションである – gbn
私より少し速い@gbn ;-) – karlgrz