Обновление внешних ключей в SQLServer, таких как Access - PullRequest
0 голосов
/ 01 февраля 2012

У меня есть таблица, Contacts, с первичным ключом ContactID, который является столбцом идентификаторов. У меня есть другая таблица, Person, с первичным ключом PersonID, который является внешним ключом для ContactID. Когда я вставляю запись в Person, я бы хотел, чтобы PersonID вытащил соответствующий идентификатор из ContactID в Contact.

В Access я просто делаю запрос, который ссылается на обе таблицы, и он заполняет столбец внешнего ключа соответствующим значением в столбце идентификатора (autonumber).

SELECT Person.PersonID, Person.FirstName, Person.MiddleName, Person.LastName, Contact.ContactID, Contact.EmailAddress, Contact.PhoneNumber FROM (Contact INNER JOIN Person ON Contact.ContactID = Person.PersonID);

Как мы можем добиться этого в SQLServer 2008 R2? Я программировал триггеры для обновления ключей, но, похоже, должен быть лучший способ.

Большое спасибо за вашу помощь.

1 Ответ

0 голосов
/ 01 февраля 2012

Когда вы вставляете в первую таблицу, вы используете предложение OUTPUT для получения значения идентификатора, а затем можете использовать его для вставки в дочернюю таблицу.

Вы также можете использовать scope_identity(), чтобы сделать то же самое, но OUTPUT является предпочтительным методом.Ни при каких обстоятельствах не используйте @@Identity, поскольку это часто приводит к неверным результатам и нарушает целостность ваших данных.

Узнайте, как их использовать, в Books Online.

...