2011-02-06 88 views
0

我正在使用以下SQL語句將新項目迭代插入到迭代表中......我可以一次插入多個迭代。迭代表具有folllowing字段:{ProjectIteratationID(PK),專案編號,開始日期,結束日期}將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表中,併爲這些迭代ID分配一些MemberID。謝謝你的幫助!

回答

2

如果您將insertselect組合使用,則必須省略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 2011-02-06 16:43:34

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);