Сделать столбец mySQL уникальным для каждого внешнего ключа - PullRequest
0 голосов
/ 14 мая 2018

Допустим, у меня есть следующий столбец в моей базе данных:

Item:
id int PRIMARY KEY,
name string,
foreign_id FOREIGN KEY

Есть ли способ без запроса базы данных перед вставкой каждый раз, когда один внешний ключ не может содержать две строки с одинаковым именем?

Ответы [ 3 ]

0 голосов
/ 14 мая 2018

Конечно, вы хотите добавить (уникальный) индекс для вашего столбца внешнего ключа. Добавляемая команда SQL:

ALTER TABLE `mytable`
ADD UNIQUE INDEX `mytable_idx__1` (`foreign_id`);
0 голосов
/ 14 мая 2018

Когда я пойму, используя FOREIGN KEY (foreign_id) REFERENCES --- решу это. И убедитесь, что всегда создаете unique key таблицы как foreign key для другой таблицы.

CREATE TABLE profile
( 
  id int NOT NULL PRIMARY KEY,
  name varchar(50),
  FOREIGN KEY (name)
     REFERENCES member (name) 
     ON DELETE CASCADE
     ON UPDATE CASCADE
) ENGINE=InnoDB ;
0 голосов
/ 14 мая 2018

Если я правильно понимаю, вы можете использовать УНИКАЛЬНОЕ ограничение:

CREATE TABLE (
    id          INT PRIMARY KEY
  , name        VARCHAR(50) --or whatever you need
  , foreign_id  INT UNIQUE
    FOREIGN KEY (foreign_id) REFERENCES...
);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...