2016-12-29 3 views
0

У меня есть следующий две таблицMySQL: изменяющая таблица добавить составной ключ с внешним ключом

Table: User  
Columns: id, name, age 

Table: Task 
Columns: id, task_name, user_id, friend_id 

user_id является внешним ключом из User таблицы.

Мне нужно написать запрос, чтобы изменить таблицу, которая создает composite между user_id и friend_id.

ли команда ниже правильный подход:

ALTER TABLE Task ADD CONSTRAINT compsite_key PRIMARY KEY (user_id, friend_id) 

Цель состоит в том, чтобы убедиться, что там никогда не дублирует user_id И friend_id записи.

ответ

0

создается композитный индекс с помощью create index:

create index idx_task_userid_friendid on task(user_id, friend_id); 

Вы также можете сделать это с помощью create table/alter table с key или index ключевых слов. Но это более типичный способ создания индекса.

+0

Следующая команда выглядит нормально: 'create index idx_task_userid_friend_id для задачи (user_id, friend_id);' – user1107173

0
ALTER TABLE Task ADD PRIMARY KEY (user_id, friend_id) 
+0

Я получаю сообщение об ошибке: «Несколько первичных ключей определены» – user1107173

+0

Первичный ключ в таблице 'Task' прямо сейчас:' id' – user1107173

+0

ALTER TABLE Задача DROP PRIMARY KEY; то код выше. вы должны сначала отказаться от текущего ПК. – Alex