/ / Створення таблиці з двома ненав'язливими ключами, які не працюють в MySQL - mysql, sql, foreign-keys, foreign-key-relations

Створення таблиці з 2 неналежними ключами, які не працюють в MySQL - mysql, sql, foreign-keys, foreign-key-relations

Я намагаюся створити 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)

Відповіді:

3 для відповіді № 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)