Tengo una tabla regionkey
:Intercambiar dos filas DB sin violar las restricciones
areaid -- primary key, int
region -- char(4)
locale -- char(4)
Todo el resto de la base de datos es areaid de la carrocería exterior. En esta tabla hay un índice sobre (región, localidad) con una restricción única.
El problema es que tengo dos registros:
101 MICH DETR
102 ILLI CHIC
Y necesito cambiar la (región, localidad) Campos entre ellos, por lo que termino con:
101 ILLI CHIC
102 MICH DETR
El enfoque ingenuo no funcionará porque viola el índice único en la región y la configuración regional:
update regionkey
set region='ILLI', locale='CHIC' where areaid = 101; -- FAILS
update regionkey
set region='MICH', locale='DETR' where areaid = 102;
¿Cómo puedo hacer esto? ¿Hay una forma atómica para hacer el intercambio? Sugerencias?
Esto puede ser lo suficientemente loco como para funcionar. ¿Crees que debería envolverlo en una transacción? – Broam
una sola inserción es una sola transacción implícita de todos modos – gbn
Solo un poco más rápido que yo, @gbn ;-) – karlgrz