Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Как получить соответствие PK при вставке.  [new]
Потерянный пассажир
Guest
Добрый день.
Вставляю записи из одной таблицы в другую.

Table1 PK1, Value1
Table2 PK2, Value2

INSERT INTO Table2 SELECT Value1 from Table1

Хочу получить таблицу соответствий PK1,PK2 для вставленных данных.
Как это проще всего сделать ?
Спасибо.
18 сен 15, 12:05    [18164788]     Ответить | Цитировать Сообщить модератору
 Re: Как получить соответствие PK при вставке.  [new]
Glory
Member

Откуда:
Сообщений: 104751
Потерянный пассажир
Как это проще всего сделать ?

В Table2 добавить еще поле
18 сен 15, 12:07    [18164797]     Ответить | Цитировать Сообщить модератору
 Re: Как получить соответствие PK при вставке.  [new]
Потерянный пассажир
Guest
2Glory - я в Table2 не могу это поле хранить - это таблица спец. набором полей, изменить ее нельзя, ну или как минимум нежелательно. Поэтому и хочу получить соответствие Исходный PK - вставленный PK.
18 сен 15, 12:14    [18164833]     Ответить | Цитировать Сообщить модератору
 Re: Как получить соответствие PK при вставке.  [new]
Glory
Member

Откуда:
Сообщений: 104751
Потерянный пассажир
2Glory - я в Table2 не могу это поле хранить - это таблица спец. набором полей, изменить ее нельзя, ну или как минимум нежелательно. Поэтому и хочу получить соответствие Исходный PK - вставленный PK.

Получить где ? В воздухе ?
18 сен 15, 12:20    [18164863]     Ответить | Цитировать Сообщить модератору
 Re: Как получить соответствие PK при вставке.  [new]
Потерянный пассажир
Guest
Неважно где. Во временной таблице, в другой таблице. Вопрос можно ли как то получить само соответствие
PK вставляемой записи - PK вставленной записи.
У меня же есть таблица inserted, но я не уверен, что можно сделать соответствие номер вставляемой строки - номер строки из INSERTED.
18 сен 15, 12:24    [18164877]     Ответить | Цитировать Сообщить модератору
 Re: Как получить соответствие PK при вставке.  [new]
Glory
Member

Откуда:
Сообщений: 104751
Потерянный пассажир
Неважно где. Во временной таблице, в другой таблице.

А как вы себе представляете хранение в таблице данных, для которых нет поля ?
18 сен 15, 12:26    [18164891]     Ответить | Цитировать Сообщить модератору
 Re: Как получить соответствие PK при вставке.  [new]
Потерянный пассажир
Guest
Я представляю как это сделать при помощи курсора - вставить строку, получить @@SCOPE_IDENTITY - вставить текущий ID и @@SCOPE_IDENTITY в временную таблицу, а хотелось бы решить это проблему без курсоров.
18 сен 15, 12:33    [18164950]     Ответить | Цитировать Сообщить модератору
 Re: Как получить соответствие PK при вставке.  [new]
Glory
Member

Откуда:
Сообщений: 104751
Потерянный пассажир
вставить текущий ID и @@SCOPE_IDENTITY в временную таблицу

И как же вы добавите и ID и @@SCOPE_IDENTITY в одно поле таблицы ? Поделитесь секретом
18 сен 15, 12:34    [18164960]     Ответить | Цитировать Сообщить модератору
 Re: Как получить соответствие PK при вставке.  [new]
Konst_One
Member

Откуда:
Сообщений: 11621
как эти таблицы связаны между собой? из ваших объяснений явно никак.
18 сен 15, 12:35    [18164968]     Ответить | Цитировать Сообщить модератору
 Re: Как получить соответствие PK при вставке.  [new]
Потерянный пассажир
Guest
Явно - никак.
Ок, никак значит никак.
Всем спасибо.
18 сен 15, 12:37    [18164995]     Ответить | Цитировать Сообщить модератору
 Re: Как получить соответствие PK при вставке.  [new]
Glory
Member

Откуда:
Сообщений: 104751
Потерянный пассажир
Явно - никак.

Т.е. вы знаете, как это сделать НЕявно ?
18 сен 15, 12:38    [18165006]     Ответить | Цитировать Сообщить модератору
 Re: Как получить соответствие PK при вставке.  [new]
invm
Member

Откуда: Москва
Сообщений: 9825
18083011
18 сен 15, 12:43    [18165072]     Ответить | Цитировать Сообщить модератору
 Re: Как получить соответствие PK при вставке.  [new]
DaniilSeryi
Member

Откуда:
Сообщений: 1963
Потерянный пассажир,

Если под PK Вы подразумеваете поле с Identity, а под соответствием PK двух таблиц - чтобы значения счётчиков Identity у одной и той же строки в обоих таблицах совпадали - копайте в направлении
SET IDENTITY INSERT схема.таблица ON
insert into схема.таблица
SET IDENTITY INSERT схема.таблица OFF
.
Применять для таблицы, куда вставляете.
18 сен 15, 12:45    [18165083]     Ответить | Цитировать Сообщить модератору
 Re: Как получить соответствие PK при вставке.  [new]
Потерянный пассажир
Guest
2invm - Оно :), прикольно, спасибо.
18 сен 15, 12:52    [18165152]     Ответить | Цитировать Сообщить модератору
 Re: Как получить соответствие PK при вставке.  [new]
Akina
Member

Откуда: Зеленоград, Москва, Россия
Сообщений: 21242
Потерянный пассажир
Вставляю записи из одной таблицы в другую.

Table1 PK1, Value1
Table2 PK2, Value2

INSERT INTO Table2 SELECT Value1 from Table1

Хочу получить таблицу соответствий PK1,PK2 для вставленных данных.
Как это проще всего сделать ?

А никак. Не вижу как минимум UNIQUE на Table1.Value1, без которого соответствие уже неоднозначно.
18 сен 15, 12:54    [18165176]     Ответить | Цитировать Сообщить модератору
 Re: Как получить соответствие PK при вставке.  [new]
Glory
Member

Откуда:
Сообщений: 104751
Потерянный пассажир
2invm - Оно :), прикольно, спасибо.

И как "оно" опять поможет занести 2 поля в одно ?
18 сен 15, 12:56    [18165196]     Ответить | Цитировать Сообщить модератору
 Re: Как получить соответствие PK при вставке.  [new]
Потерянный пассажир
Guest
2Glory я буду его хранить в другом месте. Сорри если я косноязычно выразился.
18 сен 15, 12:57    [18165208]     Ответить | Цитировать Сообщить модератору
 Re: Как получить соответствие PK при вставке.  [new]
Glory
Member

Откуда:
Сообщений: 104751
Потерянный пассажир
2Glory я буду его хранить в другом месте.

Как, черт возьми, ты будешь в одном поле хранить два значения, Карл ?
18 сен 15, 12:59    [18165226]     Ответить | Цитировать Сообщить модератору
 Re: Как получить соответствие PK при вставке.  [new]
Потерянный пассажир
Guest
Glory, Значит буду в двух :).
Вопрос же в поиске соответствия ключей а не хранении.
18 сен 15, 13:27    [18165449]     Ответить | Цитировать Сообщить модератору
 Re: Как получить соответствие PK при вставке.  [new]
BrokenPot
Member

Откуда: Киев
Сообщений: 1405
А почему нельзя в Таблицу2 вставлять ПК2, равный ПК1 из Таблицы1?

В таблице2 значения полей первичного ключа в таблице2 должны быть непременно отличны от соотв. значений в Таблице1?
18 сен 15, 17:12    [18167083]     Ответить | Цитировать Сообщить модератору
 Re: Как получить соответствие PK при вставке.  [new]
super-code
Member

Откуда:
Сообщений: 244
Потерянный пассажир, посмотри OUTPUT для команды INSERT.
18 сен 15, 18:17    [18167445]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить