我有一张桌子regionkey
:
areaid -- primary key, int
region -- char(4)
locale -- char(4)
数据库的整个其余部分都外键为 areaid。在此表中, (region, locale) 上有一个具有唯一约束的索引。
问题是我有两条记录:
101 MICH DETR
102 ILLI CHIC
我需要在它们之间交换 (region,locale) 字段,这样我就可以得到:
101 ILLI CHIC
102 MICH DETR
天真的方法行不通,因为它违反了区域和语言环境的唯一索引:
update regionkey
set region='ILLI', locale='CHIC' where areaid = 101; -- FAILS
update regionkey
set region='MICH', locale='DETR' where areaid = 102;
我怎样才能做到这一点?有没有一种原子方式来进行交换?建议?