MySQL:唯一的分组


MySQL: Unique grouped

我有一个问题,而设计我的数据库,我不知道如何解决它:

我有以下表(相关栏):

CREATE TABLE IF NOT EXISTS `prmgmt_tasks` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `name` varchar(300) NOT NULL,
  `project_id` int(11) NOT NULL,
);

我想要的:每个任务都有一个唯一的id (autoincrement)。任务的名称不是唯一的,但对于每个项目来说应该是唯一的。例如,"设计用户界面"可以在id为1和2的项目中出现,但在id为1的项目中不会出现两次。比如'unique for: group by project_id'。

当然,我可以在每个查询中检查,但我正在寻找一种在数据库中建模的方法,因此无论执行什么查询,它总是一致的。

谢谢你的帮助!

在组合字段上创建唯一的组合索引。

CREATE UNIQUE INDEX tasks_name_project
ON prmgmt_tasks (name, project_id);