2011-02-06 5 views
0

다음 SQL 문을 사용하여 Iterations 테이블에 새 프로젝트 반복을 삽입하고 있습니다 ... 한 번에 많은 반복을 삽입 할 수 있습니다. 반복을 표는 folllowing 필드가 있습니다 {ProjectIteratationID (PK), ProjectID, STARTDATE, 종료 날짜}SQL 두 테이블에 삽입

INSERT INTO Iterations (ProjectID, StartDate, EndDate) VALUES (...) 

은 내가 또한하고 싶은 것은 내가 추가하고있는 반복 사람들을 할당입니다, 그래서에 삽입해야 ProjectIterationMember 테이블

"INSERT INTO ProjectIterationMember (ProjectIterationID, MemberID) VALUES ((SELECT ProjectIterationID AS pro_it_id FROM Iterations WHERE ProjectID = '" + proj_id + "'), @member_id)"; 

오류가 발생합니다. 내 중첩 select 문은 둘 이상의 결과를 검색합니다.

예를 들어 두 번의 반복을 추가하면 PK 13과 14가 생성됩니다. 그런 다음 PK를 ProjectIterationMember 테이블에 복사하고 몇 개의 MemberID를 해당 반복 ID에 할당하려고합니다. 당신의 도움을 주셔서 감사합니다!

답변

2

select과 함께 insert을 사용하는 경우 values 키워드를 생략해야합니다. 열 목록 뒤에 select을 사용하기 만하면됩니다.

3

사용 :

INSERT INTO ProjectIterationMember 
    (ProjectIterationID, MemberID) 
SELECT ProjectIterationID AS pro_it_id, @member_id 
    FROM Iterations 
WHERE ProjectID = '" + proj_id + "' 

SQL을 사용하면 SELECT 절에 정적으로 할당 된 값을 제공 할 수 있습니다.

+0

'proj_id'가 분명히 매개 변수 여야한다는 것 외에 실제로 그 위치에서 '@ member_id' 매개 변수를 사용할 수 있습니까? 나는'SELECT' 절에서 정적 값을 사용할 수 있다는 것을 알고 있지만 아직 그 위치에 매개 변수를 사용하지 않았습니다. – hangy

+0

@hangy : 그렇습니다.하지만 항상 스스로 테스트 해 볼 수 있습니다. INSERT 부분은 생략하십시오. –

0

마지막 신원 값을 얻으려면 SCOPE_IDENTITY을 사용하십시오.

DECLARE @iterationID int; 

INSERT INTO Iterations (ProjectID, StartDate, EndDate) 
VALUES (@projectID, @startDate, @endDate); 

SET @iterationID = SCOPE_IDENTITY(); 

INSERT INTO ProjectIterationMember (ProjectIterationID, MemberID) 
VALUES (@iterationID, @memberID); 
관련 문제