2011-10-20 3 views
2

저는 Access에서 SQL Server 2008로 데이터를 가져 오는 응용 프로그램을 만들고 있습니다. 현재 저장 프로 시저를 사용하여 레코드별로 데이터를 가져옵니다. 데이터가 두 개의 관련 테이블에 삽입 되었기 때문에 대량 삽입물 또는 이와 유사한 것은 사용할 수 없습니다 ... 계정 테이블 (이름, 성 등) 및 세 개의 필드 저장 프로 시저에서 SCOPE_IDENTITY로 선택한 자동 증가 AccountID에 의해 Account 테이블에 다시 링크 된 Insurance 테이블에 레코드가 있습니다.스테이징 테이블의 데이터를 여러 관련 테이블에 삽입 하시겠습니까?

응용 프로그램에서 데이터베이스로 왕복하는 횟수가 많아 성능이 좋지 않습니다. 이것과 다른 이유로 나는 스테이징 테이블을 사용하고 거기에서 데이터를 가져올 계획입니다. 이 접근에 대한 내 옵션을 읽고, 스테이징 테이블의 데이터에 동일한 삽입 저장 프로 시저를 실행하는 커서는 의미가 있습니다. 그러나 커서는 악의적 인 육체이고 피해야합니다.

데이터를 한 테이블에 삽입하고 자동 생성 ID를 검색 한 다음 해당 레코드를 사용하여 데이터를 다른 테이블에 삽입 할 수 있습니까? 아니면 커서가 유일한 옵션입니까?

+1

SQL Server 2008에서는 '병합 ... 출력'을 사용할 수 있습니다. 이 질문을보십시오. http://stackoverflow.com/questions/5365629/using-merge-output-to-get-mapping-between-source-id-and-target-id –

+2

BUlk 스테이징 테이블에 삽입하십시오. 그런 다음 다른 사람이 설명하는대로 MERGE 및 OUTPUT을 사용합니다. – HLGEM

답변

3

OUTPUT 절을보십시오. INSERT 문에 추가하여 원하는 것을 수행 할 수 있어야합니다.

두 번째 테이블에 첫 번째 테이블에 삽입되지 않은 열을 출력해야하는 경우 OUTPUT 절이 다른 테이블 참조를 지원하므로 INSERT 대신 MERGE를 사용합니다 (원래 질문에 대한 설명에서 제안한 것처럼). 소스 테이블의 컬럼. 그렇지 않으면 INSERT로 유지하는 것이 더 간단하며 삽입 된 ID 열에 액세스 할 수 있습니다.

1

데이터 바인딩을 사용하여 관련 테이블에 여러 레코드를 삽입하는 실험이 진행 중입니다. 그래서 이것을 시험해보십시오!

이 정보는 매우 유용합니다. 이 링크 How to insert record into related tables을 따르십시오. 자세한 내용은.

+0

이 링크는 죽었습니다. – Kapocsi

관련 문제