我需要重构一个Company表,以便将地址信息移动到专用的Address表中。
所以我想我需要做这样的事情来创建新的地址记录。
INSERT INTO address (city, country, ...)
SELECT city,country, ... FROM company
但是如何使用新创建的地址记录的id更新公司表以保持参照完整性?
有几个重复的地址,所以我不能加入城市,国家/地区等。
更新
正如juergen d所提到的,我解决这个问题的方法是在地址表中创建一个临时的company_id列:
ALTER TABLE address ADD company_id INTEGER
INSERT INTO address (city,country,company_id)
SELECT city,country,id from company
UPDATE company c set c.address_id = (select a.id from address a where a.company_id = c.id)
ALTER TABLE address DROP COLUMN company_id;
答案 0 :(得分:0)
您可以在company_id
表中使用address
。
INSERT INTO address (company_id, city, country, ...)
SELECT id, city, country, ...
FROM company
然后,无需向address_id
表添加任何company
。