Изменить таблицу с внешним ключом - PullRequest
0 голосов
/ 18 апреля 2011

У меня три таблицы.

Person (id, FirstName, LastName, BirthDate)
Contact (id, contact, type)
PersonContact( Person_id, Contact_id )

Как вы можете видеть, что Person_id идет из таблицы Person в таблице PersonContact И Contact_id идет из таблицы контактов в таблице PersonContact

Я хочу написать запрос, который должен связать столбец Person_id таблицы PersonContact со столбцом id таблицы Person в качестве внешнего ключа.

И столбец Contact_id PersonContact со столбцом id таблицы Контактов в качестве внешнего ключа

Ответы [ 3 ]

3 голосов
/ 18 апреля 2011

Это должно решить проблему

CREATE TABLE IF NOT EXISTS `person_contact` (
  `contact_id` int(11) NOT NULL,
  `person_id` int(11) NOT NULL,
  PRIMARY KEY (`contact_id`,`person_id`)
) ENGINE=InnoDB  DEFAULT CHARSET=latin1;


ALTER TABLE `person_contact`
  ADD CONSTRAINT `person_contact_ibfk_2` FOREIGN KEY (`person_id`) REFERENCES `person` (`id`),
  ADD CONSTRAINT `person_contact_ibfk_1` FOREIGN KEY (`contact_id`) REFERENCES `contact` (`id`);
0 голосов
/ 18 апреля 2011

Вот мой совет в размере 0,02 доллара США в терминах T-SQL

Выберите имя, фамилию, дату рождения от лица p присоединитесь к PersonContact pc ON p.id = pc.Person_id

Выберите контакт,тип из контакта c присоединиться к PersonContact pc ON c.id = pc.Person_id

0 голосов
/ 18 апреля 2011

http://dev.mysql.com/doc/refman/5.1/en/alter-table.html

alter PersonContact add foreign key(PersonID) references Person(ID)

Чтобы выбрать, вы делаете:

select *
    from Person
        inner join PersonContact on(Person.ID=PersonContact.PersonID)
...