我用的是MySQL,我有三个表,一个任务表,一个产品表和一个描述二者关系的表:每个产品由几个任务组成,每个任务可以在多个产品中找到。
描述两者之间关系的表有两个主键,ProductID和TaskID也是外键。在这个表中,我有一个名为TaskOrder的字段,对于给定的产品,它列出了必须执行任务的顺序。
我想说的是,对于任何产品,不能有两个任务具有相同的TaskOrder,但是我不能将TaskOrder设置为唯一,因为不同的产品将(而且应该)具有TaskOrder的重复值
有办法吗?

最佳答案

需要唯一约束:

create table ProductTasks
 ( ProductID ...
 , TaskId ...
 , TaskOrder ...
 , primary key (ProductId, TaskId)
 , unique (ProductId, TaskOrder)
 );

10-07 15:37