更新时间:2025-06-04 GMT+08:00
U0000004:GaussDB的外键引用列必须是主键或者唯一键
描述
数据库类型与版本
- 源库类型与版本:所有涉及表外键的源数据库类型。
- 目标库类型与版本:GaussDB集中式版。
语法示例
当UGO识别到外键的引用列不是主键或者唯一键时,将生成此错误提示。
GaussDB集中式版表外键约束的引用列必须是唯一键或者主键,如下示例在GaussDB集中式版中不支持。
CREATE TABLE demo1 ( id INT, demo1_col VARCHAR(64) ); CREATE TABLE demo2 ( id INT, demo2_col VARCHAR(64), CONSTRAINT demo2_fk FOREIGN KEY (id) REFERENCES demo1 (id) );
改造建议
方案一:如下示例所示,删除表外键约束。
CREATE TABLE demo2 ( id INT, demo2_col VARCHAR(64)/*, CONSTRAINT demo2_fk FOREIGN KEY (id) REFERENCES demo1 (id)*/ );
此时需要通过业务来保证demo2表id列对demo1表id列的引用关系。
方案二:如下示例所示,将外键引用的列修改为主键约束或者唯一约束。
ALTER TABLE demo1 ADD UNIQUE(id);
这种情况下会修改demo1表的数据完整性约束,需要您充分评估业务影响。
父主题: 通用转换错误码