powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Как во время INSERT'а проставить связи с существующими данными?
5 сообщений из 5, страница 1 из 1
Как во время INSERT'а проставить связи с существующими данными?
    #39751006
Charles Weyland
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Table_A:
ID Name1 Пётр4 Иван7 Николай
Table_B:
ID Name
Table_A_B
ID_A ID_B

Выполняю
Код: sql
1.
2.
3.
4.
INSERT INTO Table_B(Name)
SELECT Name
FROM Table_A
WHERE какие-нибудь условия, чтобы скопировалось не всё, а только нужная часть



Задача : одновременно с этим запросом должны заполниться две таблицы:

Table_B:
ID Name21 Пётр22 Иван23 Николай
Table_A_B
ID_A ID_B1 214 227 23
Как? Нужно просто скопировать данные из одной таблицы в другую и настроить связи между ними в третьей таблице, которая реализует логику "многие ко многим".
...
Рейтинг: 0 / 0
Как во время INSERT'а проставить связи с существующими данными?
    #39751017
Charles Weyland
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А, принцип понял.
Как всегда - искал-искал, а как только опубликовал, нашёл ответ
https://docs.microsoft.com/ru-ru/sql/t-sql/queries/output-clause-transact-sql?view=sql-server-2017
...
Рейтинг: 0 / 0
Как во время INSERT'а проставить связи с существующими данными?
    #39751019
Charles Weyland
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
хотя всё равно не понятно... output вернёт мне просто кучу изменённых данных.
...
Рейтинг: 0 / 0
Как во время INSERT'а проставить связи с существующими данными?
    #39751031
aleks222
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
declare @A table( id int identity, N nvarchar(32));

declare @B table( id int identity(-1, -1), N nvarchar(32));

declare @AB table( idA int, idB int);

declare @tmp table( id int, N nvarchar(32));

delete @tmp;

insert @A
  output inserted.id, inserted.N into @tmp(id, N)
  values(N'Пётр'), (N'Иван')
;

merge @b as b using @tmp as x on 1=2
  when not matched then insert(n) values(n)
  output x.id, inserted.id into @AB(idA, idB) 
;

select * from @A;

select * from @B;

select * from @AB;
...
Рейтинг: 0 / 0
Как во время INSERT'а проставить связи с существующими данными?
    #39751481
Charles Weyland
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
очень круто!!!
...
Рейтинг: 0 / 0
5 сообщений из 5, страница 1 из 1
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Как во время INSERT'а проставить связи с существующими данными?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]