J'ai une table regionkey
:Permutation deux lignes DB sans violer les contraintes
areaid -- primary key, int
region -- char(4)
locale -- char(4)
tout le reste de la base de données est-calée à l'étranger Areaid. Dans cette table il y a un index sur (région, locale) avec une contrainte unique.
Le problème est que j'ai deux enregistrements:
101 MICH DETR
102 ILLI CHIC
Et je dois échanger les champs entre eux (région, locale), de sorte que je le vent avec:
101 ILLI CHIC
102 MICH DETR
Le approche naïve ne fonctionnera pas parce qu'elle viole l'index unique sur la région et l'environnement local:
update regionkey
set region='ILLI', locale='CHIC' where areaid = 101; -- FAILS
update regionkey
set region='MICH', locale='DETR' where areaid = 102;
Comment puis-je faire cela? Y a-t-il une manière atomique de faire le swap? Suggestions?
Cela peut juste être assez fou pour fonctionner. Pensez-vous qu'il devrait envelopper dans une transaction? – Broam
un seul insert est une seule transaction implicite de toute façon – gbn
Juste un peu plus vite que moi, @gbn ;-) – karlgrz