按其他列分组的唯一约束

unique constraint grouped by other column

我有一个 table,它有一个 father_id 列和一个 serial_number 列, 我想通过父亲id对序列号创建一个唯一约束。

意味着具有相同 father_id 的行不能具有相同的 serial_number,但具有不同 father_id 的行可以具有相同的 serial_number。

这看起来像一个复合唯一键。这是使用唯一索引的一种方法:

create unique index myindex on mytable(father_id, serial_number);

或在 create table 语句中,具有唯一约束:

create table mytable (
    father_id int,
    serial_number int,
    constraint myconstraint unique (father_id, serial_number)
);

要重新表述要求,您希望 father_idserial_number 的组合是唯一的。一旦要求这样表述,就更容易翻译成 SQL:

ALTER TABLE mytable
ADD CONSTRAINT mytable_unq UNIQUE (father_id, serial_number);