데이터베이스 구조를 수정하고 있습니다. FinancialInstitution 테이블의 여러 열 내용이 Person 테이블로 전송되어야합니다 . FinancialInstitution은 외래 키를 가진 사람과 연결되어 있습니다. 각 금융 기관에는 해당 개인의 ID가 필요합니다. 따라서 Person에 삽입 된 각 새 행에 대해이 새 행의 ID (IDENTITY)가 해당 FinancialInstitution 행으로 다시 복사되어야합니다.
이 작업을 수행하는 확실한 방법은 반복적 인 T-SQL 코드입니다. 그러나 세트 기반 작업으로 만 수행 할 수 있는지 알고 싶습니다.
나는 그러한 요청의 내부 수준이 다음과 같을 것이라고 상상했다.
INSERT INTO Person (Street1, Number1, City1, State1, PostCode1, CountryId1, WorkDirectPhone1, Fax1, Email1)
OUTPUT inserted.Id, FinancialInstitution.Id
SELECT Id, Street, Number, City, [State], PostCode, CountryId, PhoneNumber, Fax, Email
FROM FinancialInstitution;
불행히도 OUTPUT은 그런 식으로 상관시킬 수없는 것 같습니다 ...
쿼리가 Person 테이블 만 업데이트하고 있습니다. 삽입 된 부분에서 사용하지 않으면 삽입 된 ID를 캡처 할 수 있지만 FinancialInstitution.ID는 캡처 할 수 없습니다. OUTPUT 절을 제거하면 쿼리가 배치되는 방식에 따라 INSERT 문의 열 수가 SELECT 문과 일치하지 않으므로 오류가 발생합니다.
—
datagod
ypercube : Person에 삽입 한 다음 Person의 새 행 ID로 FinancialInstitution을 업데이트하고 싶습니다.
—
유고 아마릴
datagod : 나는 유일한 업데이트를 알고 있습니다.이 쿼리는 미래 솔루션의 중첩 된 수준입니다. 그러나 나는 이미 거기에 붙어 있습니다. 선택 항목을 삽입하지 않으면 선택 항목에 ID를 추가 할 수 없습니다.
—
Yugo Amaryl
@YugoAmaryl, OUTPUT 절을 사용하여 다중 행 삽입에서 ID 값 캡처
—
DenisT
Person
하시겠습니까? 아니면 기존 업데이트? 아니면에 삽입 할 할Person
다음과UPDATE FinancialInstitution
?