我有一个表Contacts
,主键为ContactID
,这是一个标识列。我有另一个表Person
,主键为PersonID
,是ContactID
的外键。当我将记录插入Person
时,我希望PersonID
从ContactID
中的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中实现这一目标?我一直在编程触发器来更新密钥,但似乎应该有更好的方法。
非常感谢您的协助。
答案 0 :(得分:0)
当您插入第一个表时,使用OUTPUT
子句来提取标识值,然后您可以使用它来插入子表。
您也可以使用scope_identity()
执行相同的操作,但OUTPUT是首选方法。在任何情况下都不要使用@@Identity
,因为它通常会给出错误的结果并弄乱您的数据完整性。
查看如何在联机丛书中使用它们。