SQL插入两个表

时间:2011-02-06 16:23:10

标签: c# sql

我使用以下SQL语句将新项目迭代插入迭代表...我可以一次插入多个迭代。迭代表包含以下字段:{ProjectIteratationID(PK),ProjectID,StartDate,EndDate}

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。谢谢你的帮助!

3 个答案:

答案 0 :(得分:3)

使用:

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

SQL允许您在SELECT子句中提供静态分配的值。

答案 1 :(得分:2)

如果您将insertselect结合使用,则必须省略values关键字。 只需使用列列表后的select即可。

答案 2 :(得分: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);