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)代码>