sql - 如何更改postgresql中的外键值?

标签 sql postgresql foreign-key-relationship

假设我有两个表:CustomerCity。有许多 Customer 住在同一个 City。这些城市有一个作为主键的 uid。客户通过 Customer.city_uid 拥有对其各自城市的外键引用。

由于外部原因,我必须将两个 City.uid 相互交换。但客户应该留在他们的城市。因此,也有必要交换 Customer.city_uid。所以我想我首先交换 City.uid,然后通过 UPDATE 语句相应地更改 Customer.city_uid。不幸的是,我不能这样做,因为这些 uids 是从 Customer 表中引用的,而 PostgreSQL 阻止我这样做。

是否有一种简单的方法可以将两个 City.uid 以及 Customer.city_uid 相互交换?

最佳答案

一个解决方案可能是:

BEGIN;
1. Drop foreign key
2. Make update
3. Create foreign key
COMMIT;

或者:

BEGIN;
1. Insert "new" correct information
2. Remove outdated information
COMMIT;

关于sql - 如何更改postgresql中的外键值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12892826/

相关文章:

sql - 用同一列中的先前值填充空值

mysql - 在我的 SQL 查询中编写 LIMIT 子查询

mysql - 在mysql中插入相关的多条记录

php - PostgreSQL Laravel 不返回 id

SQL : Adding foreign key on existing composite key

mysql - JPA EclipseLink oneToMany 派生 ID 失败

java - 使用Hibernate按主键和分区键级联删除

sql - 如何使用数据列表从查询中加入数据?

postgresql - 什么是兼容 postgres、开源且基于 php 或 python 的好 cms?

java - 外键也是主键的实体的Spring Data Repository