Создание таблицы с 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)