在AccessServer中更新SQLServer中的外键

时间:2012-01-31 20:42:39

标签: sql-server database database-design ms-access foreign-keys

我有一个表Contacts,主键为ContactID,这是一个标识列。我有另一个表Person,主键为PersonID,是ContactID的外键。当我将记录插入Person时,我希望PersonIDContactID中的Contact中提取相应的身份。

在Access中,我只是创建一个引用两个表的查询,它将使用identity(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 :(得分:0)

当您插入第一个表时,使用OUTPUT子句来提取标识值,然后您可以使用它来插入子表。

您也可以使用scope_identity()执行相同的操作,但OUTPUT是首选方法。在任何情况下都不要使用@@Identity,因为它通常会给出错误的结果并弄乱您的数据完整性。

查看如何在联机丛书中使用它们。