Выберите из таблицы и вставьте новые записи в другую таблицу, но измените некоторые значения - PullRequest
1 голос
/ 09 августа 2011

У меня есть отношение 1 ко многим между двумя таблицами ... скажем, Организация и Участники

Я хочу создать новую Организацию на основе существующей (ID 111) и скопировать всех членов, но связать их с вновь созданной организацией.

некоторый псевдокод ..

-- Just create a new organisation based on the new name and address
-- passed to the proc.
Insert into Organisation (newOrganisationName, newAddress) 
returning Organisation_ID into v_orgID;

Итак, теперь у меня есть новый идентификатор организации, возвращенный в v_orgID, скажем, 999, и я хочу скопировать участников из существующей организации, скажем, с идентификатором 111, и связать их с новым OrgID.

Каков наилучший способ добиться этого ... должен ли я выполнить цикл и вставить или я могу использовать Insert Into - выбрать из метода

INSERT INTO Members (OrganisationID, Membername, MemberAddress)
(SELECT  v_orgID, MemberName, MemberAddress FROM Member
 WHERE  OrganisationId = 111)

спасибо, Мик

Ответы [ 2 ]

7 голосов
/ 09 августа 2011

Просто вставьте v_orgID в запрос в виде числа:

INSERT INTO ... (SELECT 999, MemberName, MemberAddress FROM Member WHERE  OrganisationId = 111)

Для 999 в качестве нового идентификатора организации.

3 голосов
/ 09 августа 2011

Используйте INSERT / SELECT, изменяя значение:

INSERT INTO Members (OrganisationID, Membername, MemberAddress)
SELECT  999, MemberName, MemberAddress FROM Member
 WHERE  OrganisationId = 111
...