在SQL中这有什么区别
create table marriage (
person1 int not null references human on delete cascade,
person2 int not null references human on delete cascade,
primary key (person1, person2)
);
还有这个
create table marriage (
person1 int not null references human on delete cascade,
person2 int not null references human on delete cascade,
primary key (person1),
unique (person2)
);
带有两个主键的表是否可以防止这种情况?
marriage:
person1 | person2
1 2
2 1
最佳答案
第一个索引是两列的唯一索引:这意味着两者的组合应该是唯一的。行1,2和2,1不会违反索引,因为索引将它们视为一组。 1,2和1,3也不违反索引。
第二个示例包含两个索引,并且两个索引都必须唯一。这意味着具有1,2和1,3的行违反了索引约束。