我正在尝试向PostgreSQL 8.4数据库中的表添加外键约束,但它失败了,因为目标字段虽然是多列主键的一部分,但它本身并不是唯一的。
数据库具有以下结构:
表1(主要ID的名称):
PrimaryType, Name
[Primary key = "PrimaryType"]
表2(每种主要ID的子ID名称):
PrimaryType, SubType, Name
[Primary key = "PrimaryType, SubType"]
[Foreign key = "Table2.PrimaryType = Table1.PrimaryType"]
表3(包含主要和子ID的日志):
PrimaryType, SubType, DATA1, DATA2, ..., DATAN
[Foreign key = "Table3.PrimaryType = Table1.PrimaryType" AND "Table3.SubType = Table2.SubType"]
显然,表3的外键的第二部分是造成问题的原因。我只需要确保日志中的主要和子类型ID对是有效的组合。
提前致谢。
答案 0 :(得分:2)
对于表3的外键,请更改:
foreign key PrimaryType references Table1(PrimaryType)
foreign key SubType references Table2(Subtype)
到
foreign key (PrimaryType, SubType) references Table2(PrimaryType, SubTYpe)