Ich habe eine Tabelle regionkey
:Swapping zwei DB Reihen ohne Einschränkungen zu verletzen
areaid -- primary key, int
region -- char(4)
locale -- char(4)
Der gesamte Rest der Datenbank ist im Ausland verkeilt AreaID. In dieser Tabelle gibt es einen Index für (Region, Gebietsschema) mit einer eindeutigen Einschränkung.
Das Problem ist, dass ich zwei Datensätze:
101 MICH DETR
102 ILLI CHIC
Und ich brauche die (Region, locale) Felder zwischen ihnen zu wechseln, so dass ich mit aufzuwickeln:
101 ILLI CHIC
102 MICH DETR
Die naiver Ansatz wird nicht funktionieren, weil sie den eindeutigen Index für Region und locale verletzt:
update regionkey
set region='ILLI', locale='CHIC' where areaid = 101; -- FAILS
update regionkey
set region='MICH', locale='DETR' where areaid = 102;
Wie kann ich das tun? Gibt es einen atomaren Weg, den Swap zu machen? Vorschläge?
Dies kann einfach verrückt genug sein, um zu arbeiten. Glaubst du, er sollte es in eine Transaktion einpacken? – Broam
eine einzige Einfügung ist sowieso eine einzige implizite Transaktion – gbn
Nur ein bisschen schneller als ich, @gbn ;-) – karlgrz