假设我有两个表格:Customer
和City
。有很多Customer
住在同一个City
。这些城市的主要关键是uid
。客户通过Customer.city_uid
可以获得对各自城市的外部参照。如何更改postgresql中的外键值?
由于外在原因,我必须互相交换两个City.uid
。但客户应该留在他们的城市。因此有必要更换Customer.city_uid
。所以我想我先交换City.uid
s,然后通过UPDATE
-statement更改Customer.city_uid
s。不幸的是,我不能这样做,因为这些uids
引用自Customer
-table,PostgreSQL阻止我这样做。
是否有简单的方法将两个City.uid
与另一个以及Customer.city_uid
s交换?
如果您有N个引用“主”(在您的情况下为城市)表中的表格,则问题会变得更大。到目前为止,这是我最喜欢的解决方案:http://stackoverflow.com/a/18273069/633961(但我仍然在寻找更好的方法来解决这个问题)。 – guettli