MySQL:更改表以添加带有外键的复合键

MySQL:更改表以添加带有外键的复合键,mysql,sql,database-design,Mysql,Sql,Database Design,我有下面两张桌子 Table: User Columns: id, name, age Table: Task Columns: id, task_name, user_id, friend_id user\u id是user表中的外键 我需要编写一个查询来更改一个表,该表在user\u id和friend\u id之间创建一个composite索引 下面的命令是否为正确接近: ALTER TABLE Task ADD CONSTRAINT compsite_key PRIMARY

我有下面两张桌子

Table: User    
Columns: id, name, age

Table: Task
Columns:  id, task_name, user_id, friend_id
user\u id
user
表中的外键

我需要编写一个查询来更改一个表,该表在
user\u id
friend\u id
之间创建一个
composite
索引

下面的命令是否为正确接近:

ALTER TABLE Task ADD CONSTRAINT compsite_key PRIMARY KEY (user_id, friend_id)
目标是确保
用户id
朋友id
记录永远不会重复

您可以使用
创建索引
创建复合索引:

ALTER TABLE Task ADD PRIMARY KEY (user_id, friend_id)
create index idx_task_userid_friendid on task(user_id, friend_id);

您也可以使用
键或
索引
关键字使用
创建表
/
更改表
。但是这是创建索引的更典型的方法。

我得到一个错误:
定义了多个主键
现在
任务
表中的主键是
id
ALTER table Task DROP主键;然后是上面的代码。您必须先删除当前主键。请在您的答案周围添加更多上下文。仅代码或仅链接的答案很难理解。如果您能在帖子中添加更多信息,这将有助于询问者和未来的读者。@Alex我遇到以下错误:
表定义不正确;只能有一个自动列,必须将其定义为键
以下命令似乎运行正常:
创建索引idx\u task\u userid\u friend\u id on task(user\u id,friend\u id)