如何为与另一列组合时只需要唯一的列添加唯一约束?

时间:2013-12-16 00:53:49

标签: mysql sql constraints

好的,我想说我想创建两个表并用外键匹配它们:

    Table #1 Series
    Col 1: Series number (unique, primary key)
    Col 2: Series name
    Col 3: Series published date

    Table #2 Episodes
    Col 1: Series number (not unique in this table, foreign key, referenced with col1 of series table)
    Col 2: Episode number 
    Col 3: Episode name

现在表格剧集的Col2不可能是独一无二的(因为每个系列都有第一,第二等剧集)但是当与col1结合时它确实需要是唯一的。换句话说,我希望我的约束允许这样:

    Row 1: Series number 1, Episode number 1; Row 2: Series number 2, Episode number 1 

但不允许这样:

    Row 1: Series number 1, Episode number 1; Row 2: Series number 1, Episode number 1

我不知道怎么做。我不能在剧集#专栏上有一个独特的约束,但我想避免看到重复的剧集编号与同一系列编号匹配。

当然这可以通过客户端的javascript(提交数据的地方)来解决,但我认为这将是一个简单的解决方案。

2 个答案:

答案 0 :(得分:1)

您可以在多个列上创建唯一索引:

alter table Episodes add unique index(Seriesnumber, Episodenumber);

答案 1 :(得分:0)

CREATE UNIQUE INDEX some_name ON Episodes(col1, col2);

它被称为复合键或索引。