2013-11-22 5 views
0

SQL Server의 테이블 B에서 새로운 기록을 참조하여 테이블 A에 열 :업데이트 내가 정기적으로 두 테이블에 새로운 데이터를 삽입 할 필요가

mstr_project 때마다 내가 하나 개의 프로젝트에 레코드를 삽입 (1 열). ID 열 Project_ID이 있으므로 새 프로젝트 레코드가 삽입 될 때마다 프로젝트 ID가 자동으로 생성됩니다.

tbl_ProjectData. 새 프로젝트의 새 데이터 200 행을 삽입 할 때마다 테이블 mstr_project에 추가됩니다.

내 질문 - 새로운 기록을 새로 테이블 mstr_projectProject_ID 생성에 걸릴 있도록 어떻게, tbl_ProjectData의 모든 시간을 ProjectID 열을 업데이트합니까? 즉, 테이블 tbl_ProjectData의 200 개의 새 레코드는 항상 mstr_project 테이블에 생성 된 것과 동일한 ProjectID을 사용합니다. 에 주목, 두 번째 코드에 대한

CREATE TABLE #NewProjectIDs (
    ProjectID int NOT NULL PRIMARY KEY CLUSTERED 
); 

INSERT dbo.mstr_project (Name) 
OUTPUT ProjectID INTO #NewProjectIDs 
SELECT 'My New Project'; 

INSERT dbo.tbl_ProjectData (ProjectID, Value) 
SELECT N.ProjectID, V.Value 
FROM 
    #NewProjectIDs 
    CROSS JOIN #ProjectDataValues V; 

:

DECLARE @ProjectID int; 
INSERT dbo.mstr_project (Name) VALUES ('My New Project'); 
SET @ProjectID = Scope_Identity(); 

INSERT dbo.tbl_ProjectData (ProjectID, Value) 
SELECT @ProjectID, Value 
FROM #ProjectDataValues; 

당신은 또한 OUTPUT 절 (SQL 서버 최대 2005)를 사용하여 삽입 된 값을 캡처 할 수 있습니다 :

답변

0

그냥 Scope_Identity 사용 프로젝트 테이블에 몇 개의 행을 삽입합니까? 한 번에 여러 개를 삽입하는 경우 ProjectData 테이블에있는 각 행에 대해 올바른 프로젝트를 선택하기 위해 다른 작업을 수행해야합니다.

참고 : "tbl_"을 접두사로 사용하여 표의 이름을 지정하지 마십시오. 언젠가는 당신에 대한 살인적인 꿈에서 누군가를 구할 수 있습니다.

관련 문제