0

테이블의 기본 키는 ContactID입니다.이 테이블은 ID 열입니다. 다른 테이블 Person이 있고 PersonID의 기본 키는 ContactID의 외래 키입니다. Person에 레코드를 삽입 할 때 PersonID에서 ContactID의 해당 ID를 Contact으로 가져오고 싶습니다.Access와 같은 SQLServer에서 외래 키 업데이트

Access에서는 두 테이블을 모두 참조하는 쿼리를 작성하고 ID (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

첫 번째 테이블에 삽입 할 때 OUTPUT 절을 사용하여 ID 값을 가져온 다음이를 사용하여 하위 테이블에 삽입 할 수 있습니다.

동일한 작업을 수행하려면 scope_identity()을 사용할 수도 있지만 OUTPUT을 사용하는 것이 좋습니다. 어떠한 경우에도 @@Identity을 사용하지 마십시오. 종종 잘못된 결과가 발생하고 데이터 무결성이 엉망이됩니다.

온라인 설명서에서 사용 방법을 찾아보십시오.

+0

질문을 'qPerson'으로 정의 해 보겠습니다. Access에서 'INSERT INTO qPerson (FirstName, LastName, PhoneNumber) VALUES ("Bobort", "Bogobin", "N/A")'를 사용하면 키가 자동으로 입력됩니다. 'OUTPUT' 절을 사용하는 대신 트리거 나 다른 내장 된 방법을 사용하여 SQLServer에서 이와 동일한 간단한 구문을 유지합니까? – Bobort