【发布时间】:2021-03-26 00:17:07
【问题描述】:
我有一个表,它有一个father_id 列和一个serial_number 列, 我想通过父亲 id 对序列号创建一个唯一约束。
表示具有相同father_id的行不能具有相同的serial_number,但具有不同father_id的行可以具有相同的serial_number。
【问题讨论】:
标签: sql oracle ddl unique-constraint composite-key
我有一个表,它有一个father_id 列和一个serial_number 列, 我想通过父亲 id 对序列号创建一个唯一约束。
表示具有相同father_id的行不能具有相同的serial_number,但具有不同father_id的行可以具有相同的serial_number。
【问题讨论】:
标签: sql oracle ddl unique-constraint composite-key
重新表述该要求,您希望father_id 和serial_number 的组合是唯一的。一旦要求这样表述,就更容易转换为 SQL:
ALTER TABLE mytable
ADD CONSTRAINT mytable_unq UNIQUE (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)
);
【讨论】: