在SQL中,我如何才能有两个不能相同的字段,只有一个是主键

Ben*_*ino 1 mysql sql

我正在使用MySQL,我有三个表,一个任务表,一个产品表和一个描述两者之间关系的表:每个产品由几个任务组成,每个任务可以在多个产品中找到.

描述两者之间关系的表有两个主键,ProductID和TaskID也都是外键.在这个表中,我有一个名为TaskOrder的字段,对于给定的Product,它列出了必须执行任务的顺序.

我想要的是,对于任何产品,你不能拥有相同TaskOrder的两个任务,但我不能只将TaskOrder设置为唯一,因为不同的产品将(并且应该)具有TaskOrder的重复值

有办法做到这一点吗?

Ton*_*ews 5

你想要一个UNIQUE约束:

create table ProductTasks
 ( ProductID ...
 , TaskId ...
 , TaskOrder ...
 , primary key (ProductId, TaskId)
 , unique (ProductId, TaskOrder)
 );
Run Code Online (Sandbox Code Playgroud)