DB2-我可以在具有数据的表中重新创建外键约束吗?

问题描述 投票:0回答:1

我在使用DB2时遇到以下问题:我需要更改列名(列“ A”),但问题是列A具有PK约束和FK约束。因此,我需要先删除此约束,更改列名,然后再次创建约束。但是我记得有一次教授告诉我,您不能在已经具有值的列中创建外键。是真的吗?

这是我的脚本:

ALTER TABLE TARGET_TABLE 
    DROP PRIMARY KEY PK_A CASCADE;

ALTER TABLE TARGET_TABLE 
    RENAME COLUMN A TO B;

alter table TARGET_TABLE 
add CONSTRAINT PK_B PRIMARY KEY( B);

alter table TARGET_TABLE CONSTRAINT FK_B FOREIGN KEY( B) REFERENCES OTHER_TABLE(C);

提前感谢。

sql db2 constraints
1个回答
0
投票

您可以在已经具有值的列上创建外键。唯一的限制是这些值必须对您定义的FK有效。

如果没有,您将得到一个错误,例如

SQL0667N  The FOREIGN KEY "I..." cannot be created because the table contains 
rows with foreign key values that cannot be found in the parent key of the 
parent table.  SQLSTATE=23520
© www.soinside.com 2019 - 2024. All rights reserved.