2012-01-31 38 views
0

我有一個表,Contacts,主鍵爲ContactID,這是一個標識列。我有另一個表Person,主鍵爲PersonID,這是ContactID的外鍵。當我在Person中插入記錄時,我想PersonID從中提取相應標識Contact更新SQLServer中的外鍵,如Access

在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);

我們怎樣才能在2008年的SQLServer R2實現這一目標?我一直在編程觸發器來更新密鑰,但似乎應該有更好的方法。

非常感謝您的協助。

回答

0

當您插入到第一個表中時,您使用OUTPUT子句來拉取標識值,然後可以使用它插入到子表中。

您也可以使用scope_identity()來做同樣的事情,但OUTPUT是首選的方法。請勿在任何情況下使用@@Identity,因爲它通常會給出不正確的結果並且會破壞數據的完整性。

查看如何在聯機叢書中使用它們。

+0

讓我們在我的問題中將查詢定義爲'qPerson'。在Access中,如果我只是使用'INSERT INTO qPerson(FirstName,LastName,PhoneNumber)VALUES(「Bobort」,「Bogobin」,「N/A」)',鍵會自動填入。有沒有辦法在SQLServer中使用觸發器或其他內置方法而不是使用'OUTPUT'子句來維護這種相同的簡單語法? – Bobort 2012-02-02 15:06:11