Как отнести первичный ключ как иностранный к различным таблицам - PullRequest
0 голосов
/ 02 апреля 2020

У меня есть таблица с именем User, которая содержит user_id в качестве первичного ключа. У меня есть другие таблицы, такие как Doctor, Patient, Staff ... et c, которые содержат вызванный столбец, который ссылается на user_id пользовательской таблицы.

Вот моя проблема: я не могу использовать одно и то же имя ограничения в разных таблицах, например

ALTER TABLE `emr@default`.`staff` 
ADD CONSTRAINT `FK_created_by`
  FOREIGN KEY (`created_by`)
  REFERENCES `emr@default`.`users` (`user_id`)
  ON DELETE CASCADE;

успешно создается

при попытке использовать другую таблицу

ALTER TABLE `emr@default`.patient 
ADD CONSTRAINT `FK_created_by`
  FOREIGN KEY (`created_by`)
  REFERENCES `emr@default`.`users` (`user_id`)
  ON DELETE CASCADE;

ошибка генерации Код ошибки: 1022. Не могу написать; дубликат ключа в таблице '# sql -1_7a64'

, если я попытаюсь

ALTER TABLE `emr@default`.patient 
ADD CONSTRAINT `FK_created_by1`
  FOREIGN KEY (`created_by`)
  REFERENCES `emr@default`.`users` (`user_id`)
  ON DELETE CASCADE;

создает fk

, я сомневаюсь, что мы можем использовать то же ограничение name.if я не могу создать другое имя ограничения, которое ни на что не повлияет

1 Ответ

1 голос
/ 02 апреля 2020

Имена ограничений могут иметь конфликты между таблицами. Вот почему я включаю имена таблиц и столбцов в имя ограничения:

ALTER TABLE `emr@default`.patient 
ADD CONSTRAINT `FK_patient_created_by`
  FOREIGN KEY (`created_by`)
  REFERENCES `emr@default`.`users` (`user_id`)
  ON DELETE CASCADE;

ALTER TABLE `emr@default`.`staff` 
ADD CONSTRAINT `FK_staff_created_by`
  FOREIGN KEY (`created_by`)
  REFERENCES `emr@default`.`users` (`user_id`)
  ON DELETE CASCADE;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...