Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 2008.11.09;
Скачать: [xml.tar.bz2];

Вниз

Зарезервировать ключ перед вставкой   Найти похожие ветки 

 
TADOCommand   (2008-04-23 13:53) [0]

Подскажите как элегантнее поступить в ситуации:

Требуется сделать по инсерту в две таблицы.
Первый инсерт должен породить уникальный целочисленный ключ, который потом должен быть использован во втором инсерте. (связь один к одному в общем);

PS MSSQL2005


 
Ega23 ©   (2008-04-23 13:57) [1]

В одной транзакции или нет?


 
TADOCommand   (2008-04-23 13:58) [2]

в одной


 
TADOCommand   (2008-04-23 14:01) [3]

намек на сначала вставить, потом взять идентити таблицы и сделать второй инсерт?


 
TADOCommand   (2008-04-23 14:04) [4]

А нету там чо-нить наподобие ораклового returning, чтобы после первого инсерта ключ уже был на клиенте?


 
Ega23 ©   (2008-04-23 14:21) [5]


> намек на сначала вставить, потом взять идентити таблицы
> и сделать второй инсерт?
>


Конечно.


 
Ega23 ©   (2008-04-23 14:24) [6]

Ну либо всё разом, оба инсерта. Что-то типа
declare @x int
Set NoCount ON
insert into MasterTable (....) Values (....)
Set @x = Scope_Identity()
insert into DetailTable (MasterID, ....) Values (@X, ...)
Select Result=@x;


Последний select - это если на клиент получить и спозиционироваться.


 
TADOCommand   (2008-04-23 14:44) [7]

ага, понятно. сенкс.


 
Anatoly Podgoretsky ©   (2008-04-23 16:38) [8]

> Ega23  (23.04.2008 13:57:01)  [1]

Какая разница?


 
Anatoly Podgoretsky ©   (2008-04-23 16:38) [9]

> TADOCommand  (23.04.2008 14:01:03)  [3]

Это не намек, а прямое указание.


 
Ega23 ©   (2008-04-23 16:53) [10]


> Anatoly Podgoretsky ©   (23.04.08 16:38) [8]
>
> > Ega23  (23.04.2008 13:57:01)  [1]
>
> Какая разница?


Ну разница в том, когда получать значение на клиент (и получать ли вообще). Скрипт из [6] без финального select можно одним блоком Execute выполнить.


 
sniknik ©   (2008-04-23 16:58) [11]

> Скрипт из [6] без финального select можно одним блоком Execute выполнить.
с финальным тоже, только с open.


 
TADOCommand   (2008-04-23 16:59) [12]

не, финальный селект нам не нада.
прилада вообще не визуальная.


 
TADOCommand   (2008-04-23 16:59) [13]

точнее не интерактивная. сервис это 24х7


 
sniknik ©   (2008-04-23 17:00) [14]

вернее, и с Execute тоже можно, просто чуть больше с ним "телодвижений" чем с open.


 
Ega23 ©   (2008-04-23 17:00) [15]


> sniknik ©   (23.04.08 16:58) [11]
>
> > Скрипт из [6] без финального select можно одним блоком
> Execute выполнить.
> с финальным тоже, только с open.
>


Не, ну у автора же ник TADOCommand...  :)))


 
Ega23 ©   (2008-04-23 17:01) [16]


> вернее, и с Execute тоже можно, просто чуть больше с ним
> "телодвижений" чем с open.


Можно, только "нафига козе баян?"  :)


 
sniknik ©   (2008-04-23 17:04) [17]

> Можно, только "нафига козе баян?"  :)
не знаю, это ты предлагал значение в рекордсете получать. я бы сделал через аутпут параметр.


 
Ega23 ©   (2008-04-23 17:06) [18]


> не знаю, это ты предлагал значение в рекордсете получать.
>  я бы сделал через аутпут параметр.


Старая привычка.


 
ANB   (2008-04-23 17:10) [19]

А почему нельзя в одной команде сделать 2 инсерта, не доставая ИД на клиента ?


 
Ega23 ©   (2008-04-23 17:14) [20]


> А почему нельзя в одной команде сделать 2 инсерта, не доставая
> ИД на клиента ?


Кто сказал, что нельзя? Ты ветку-то прочитал?


 
TADOCommand   (2008-04-23 17:15) [21]

на клиенте он нужен так как мне его надо тут же отдать во внешнюю систему.


 
ANB   (2008-04-24 14:27) [22]


> Ega23 ©   (23.04.08 17:14) [20]
>
> > А почему нельзя в одной команде сделать 2 инсерта, не
> доставая
> > ИД на клиента ?
>
>
> Кто сказал, что нельзя? Ты ветку-то прочитал?

Невнимательно.


> TADOCommand   (23.04.08 17:15) [21]
> на клиенте он нужен так как мне его надо тут же отдать во
> внешнюю систему.

Тогда понятно. См. советы Ega23.



Страницы: 1 вся ветка

Форум: "Базы";
Текущий архив: 2008.11.09;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.49 MB
Время: 0.004 c
3-1209092666
azamatufa
2008-04-25 07:04
2008.11.09
Paradox - не работает Filter LIKE


6-1195038106
Vice____
2007-11-14 14:01
2008.11.09
пересылка файла через сокеты


6-1194787304
Olegz77
2007-11-11 16:21
2008.11.09
Indy: TIdPop3, TIdMessage


6-1194704010
Slim
2007-11-10 17:13
2008.11.09
Не могу нажать на кнопку в TWebBrowser


2-1222680628
Vlad Oshin
2008-09-29 13:30
2008.11.09
tCheckBox, внешний вид, увеличить размеры квадрата





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский