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

Откуда: г. Пермь
Сообщений: 4224
Наверное мой вопрос банален. Но я ни как не могу сообразить
есть 2 таблицы связанные между собой по 1 полю INT
в 1 таблице "Contact" и к пример поля
"Ключ (int), Фамилия, Имя, Отчество, Телефон, КлючСтаны (int)"
в 2 таблице "Country"
"Ключ (int), Название"

есть хранимая процедура в которую передается XML таблица с полями "Фамилия, Имя, Отчество, Телефон, Страна" (все varchar(max)) , записей в XML таблице может быть много.

в 1 таблицу вставка происходит по INSERT INTO Contact (SELECT блаблабла из XML), но тогда страна не может быть вставлена, потом что в таблице не поле, а ключ который указывает на страну в другой таблице.

Как правильно вставить в таблицу 2 (Country) название страны так, что бы оно было уникальным (то есть если оно уже есть), в таблице №1 вставлялся [Country].Ключ этой страны, а несли нет, в этой таблице вставлялось новое поле Country.Название и в 1 таблицу соотвественно вствлялся SCOPE_IDENTITY().

Функции не позволяют мне использоваться INSERT. Остается только вариант бежать по XML таблицу (которая уже сохранена в @table и добавлять значения.

Есть какие то другие разумные способы? заранее спасибо.
4 июл 12, 11:06    [12814332]     Ответить | Цитировать Сообщить модератору
 Re: Вставка в несколько таблиц.  [new]
Glory
Member

Откуда:
Сообщений: 104751
1. Добавить Country и получить добавленные записи с помощью OUTPUT
2. Добавить Contact, использую полученные в п.1 данные
4 июл 12, 11:11    [12814379]     Ответить | Цитировать Сообщить модератору
 Re: Вставка в несколько таблиц.  [new]
Roman Mejtes
Member

Откуда: г. Пермь
Сообщений: 4224
А если в таблице Country такая страна уже есть OUTPUT вернет значение полу "Ключ"? :)
спасибо за инфу уже пробую, не пользовался OUTPUT'ом
4 июл 12, 11:32    [12814590]     Ответить | Цитировать Сообщить модератору
 Re: Вставка в несколько таблиц.  [new]
Glory
Member

Откуда:
Сообщений: 104751
Roman Mejtes
А если в таблице Country такая страна уже есть OUTPUT вернет значение полу "Ключ"? :)

Результат OUTPUT зависит от команды. Потому что OUTPUT есть часть команды, а не самостоятельная команда
4 июл 12, 11:52    [12814881]     Ответить | Цитировать Сообщить модератору
 Re: Вставка в несколько таблиц.  [new]
Roman Mejtes
Member

Откуда: г. Пермь
Сообщений: 4224
Glory,

в этом и вопрос.
к примеру уникальность записей я могу достич с помощь Index и параметра уникальности в нем.
Но тогда к примеру если в таблице есть

1, 'Россия'
2, 'Китай'
3, 'США'
4, 'Франция'
5, 'Германия'

и я вставлю

'Россия'
'Китай'
'Италия'

будет ошибка, о том, что записи не могут подвторяться.. и output ни чего не вернет.
Если индекса нет, то просто напросто в конце таблицы появится еще 3 записи...
4 июл 12, 12:14    [12815044]     Ответить | Цитировать Сообщить модератору
 Re: Вставка в несколько таблиц.  [new]
Glory
Member

Откуда:
Сообщений: 104751
Roman Mejtes
будет ошибка, о том, что записи не могут подвторяться.. и output ни чего не вернет.

ну так напишите такую вставку, которая не будет вызывать ошибку
4 июл 12, 12:15    [12815054]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить