从FK引用的表更新表中的数据

时间:2015-05-29 22:42:18

标签: postgresql insert

我有两张表device_test_resultsdevices

device_test_results
- id
- device_id (FK)
- brand
- model
- serial_number

devices
- id
- brand
- model
- serial_number

device_test_results有一个外键 - device_id引用devices

自从我使用此设置以及从device_test_resultsdevices引用的大量数据以来,已经有一段时间了。

我目前正试图摆脱这种依赖关系,因此我在brand添加了model serial_numberdevice_test_results列来复制所有现有信息从devices表中删除此约束,以便这两个表变为独立。

为此寻找解决方案的任何建议或地点?

1 个答案:

答案 0 :(得分:1)

你应该尝试下面这样的事情。使用SELECT查询和JOIN与其他表一起获取所需数据,然后相应地执行INSERT操作。

INSERT INTO device_test_results (brand, model, serial_number) 
SELECT * FROM
(
SELECT d.brand, d.model, d.serial_number 
from devices d 
inner join device_test_results dtr on dtr.device_id = d.id
) tab

修改

然后使用UPDATE查询与{/ p>等其他表格进行JOIN

UPDATE device_test_results AS dtr 
SET brand = d.brand
 model = d.model
 serial_number = d.serial_number
FROM devices AS d
WHERE dtr.device_id = d.id;