sql唯一复合外键

时间:2013-10-02 04:29:01

标签: mysql sql postgresql

我有两张桌子:

group_config (id_group_config, owner_id, name_group_config)

group (id_group, id_group_config, name_group) - id_group_config is FK to group_config

基本上,用户(owner_id)创建group_config,然后创建一个引用该group_config的组。非常标准,但我想要一个约束,name_group必须是每个owner_id唯一。

我发现这样做的唯一方法就是复制组表上的owner_id,这可能会导致不一致。

我错过了什么吗?

感谢

1 个答案:

答案 0 :(得分:0)

由于没有owner_id就不能存在group_config你应该将group_config的PK作为由owner_id和group_config_id组成的复合PK。您需要注意参考完整性约束,例如:删除所有者后会发生什么?

这将自动使组中的FK成为该复合键。

要使组表中每个所有者的name_group唯一,您可以创建一个由列owner_id和name_group组成的唯一索引。