Создание таблицы с 2-мя клавишами, не работающими в MySQL

Я пытаюсь создать 2 таблицы в MySQL с помощью приведенного ниже сценария, но второй запрос не удается с:

Код ошибки: 1215. Невозможно добавить ограничение внешнего ключа.

Это потому, что я связываю 2 столбца в emergency_contact_tbl с одним столбцом в таблице userinfo?

Как еще я могу создать эти отношения в базе данных?

CREATE  TABLE IF NOT EXISTS  `userinfo` (
  `userid` INT,
  `name` VARCHAR(45),
  PRIMARY KEY (`userid`) )

CREATE  TABLE IF NOT EXISTS `emergency_contact_tbl` (
  `userid` INT NOT NULL ,
  `emergency_contact_personid` INT NOT NULL ,
  INDEX `emergency_contact_tbl_idx` (`userid` ASC, `emergency_contact_personid` ASC) ,
  CONSTRAINT `emergency_contact_tbl_cons`
    FOREIGN KEY (`userid` , `emergency_contact_personid` )
    REFERENCES `userinfo` (`userid` , `userid` )
    ON DELETE CASCADE
    ON UPDATE CASCADE)

1 ответ

Решение

Вы не можете использовать дважды один и тот же столбец в REFERENCES пункт.

Что вы должны сделать, это:

CREATE  TABLE IF NOT EXISTS `emergency_contact_tbl` (
  `userid` INT NOT NULL ,
  `emergency_contact_personid` INT NOT NULL ,
  INDEX `emergency_contact_tbl_idx` (`userid` ASC, `emergency_contact_personid` ASC) ,
  CONSTRAINT `emergency_contact_tbl_cons1`
    FOREIGN KEY (`userid`  )
    REFERENCES `userinfo` (`userid` )
    ON DELETE CASCADE
    ON UPDATE CASCADE,
  CONSTRAINT `emergency_contact_tbl_cons2`
    FOREIGN KEY (`emergency_contact_personid` )
    REFERENCES `userinfo` (`userid` )
    ON DELETE CASCADE
    ON UPDATE CASCADE)
Другие вопросы по тегам