Вставка SQL в две таблицы - PullRequest
       0

Вставка SQL в две таблицы

0 голосов
/ 06 февраля 2011

Я использую следующую инструкцию 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)";

Я получаю ошибку. Мой вложенный оператор выбора получает более одного результата.

Например, если я добавлю две итерации, будут сгенерированы PK 13 и 14. Затем я хочу скопировать PK в таблицу ProjectIterationMember и назначить несколько идентификаторов MemberID для этих идентификаторов итерации. Спасибо за вашу помощь!

Ответы [ 3 ]

3 голосов
/ 06 февраля 2011

Использование:

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

SQL позволяет указывать статически назначенные значения в предложении SELECT.

2 голосов
/ 06 февраля 2011

Если вы используете insert в сочетании с select, вы должны опустить ключевое слово values.Просто используйте select после списка столбцов.

0 голосов
/ 06 февраля 2011

Используйте 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);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...