将数据更新为新的外部整数键



我有一些包含等数据的表

  • Company(密码、姓名、地址(
  • Country(国家ID、名称(

每家公司都在一个国家/地区运营,有一个带有2个外部密钥的表Being(compid,countryid(。

当前的compid/countryid属于varchar类型,因此我需要向company/country添加一个新的整数密钥

完成后,我想用两个新的整数列更新表'being',比如compid_intcountryid_int

我想将公司和国家的新整数id映射到being表中的新列中,然后将其设置为外部键。映射将基于以前的varchar密钥。

如何做到这一点?

UPDATE being
SET being.compid_int = company.compid_int
FROM being, company
WHERE being.compid = company.compid;
UPDATE being
SET being.countryid_int = country.countryid_int
FROM being, country
WHERE being.countryid = country.countryid;

这样行吗?

然后我需要更改外部键并删除所有3个表中的旧列?

您可以在单个UPDATE语句中使用标准SQL实现所需的结果,如下所示:

UPDATE BEING B
SET B.COMPID_INT = (
SELECT C.COMPID_INT
FROM COMPANY C
WHERE B.COMPID = C.COMPID),
B.COUNTRYID_INT = (
SELECT C.COUNTRYID_INT
FROM COUNTRY C
WHERE B.COUNTRYID = C.COUNTRYID
);

相关内容

  • 没有找到相关文章

最新更新