Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

INSERT в MSSQL [D7, MSSQL]


Страницы:   1 2 3 4

ST ©   (2005-04-28 12:23:00) 

Господа, подскажите, можно ли при выполнении INSERT на MSSQL 2000 вытащить полученный автоинкрементом новый индекс записи в одном запросе.


Fay   (2005-04-29 17:26:00) [1]

Мыши плакали...


ANB   (2005-04-29 17:19:00) [2]

Элементарно, Ватсон. Ты выводишь форму для новой накладной. И хочешь, чтобы на ней уже был номер. А его тебе разрешили генерить из ID с дырками, лишь бы был разный.


Stanislav   (2005-04-29 16:57:00) [3]

msguns ©   (29.04.05 16:42) [64] - Правильно.
ANB ©   (29.04.05 16:38) [63]
Не хочу морочить тебе голову, но можно пример где может понадоится узнать ID до вставки ?


msguns   (2005-04-29 16:55:00) [4]

Сильно сомневаюсь, хотя черт его знает

Всем спасибо за весьма содержательную беседу. Особый респект ANB © . Жаль, что так и не дождался ответа Полевого.

Пошел праздновать, чего и вам желаю ;))


ANB   (2005-04-29 16:48:00) [5]

И такой же шустрый ?


msguns   (2005-04-29 16:42:00) [6]

>ANB ©   (29.04.05 16:38) [63]
>Max прокатит, только если ты уверен, что работаешь один.

Ты не понял Стаса. Он сначала вставляет запись, а потом узнает ID. Просто вместо @@identity опрашивает max. Если это в одной транзакции, то рез-т одинаковый.


ANB   (2005-04-29 16:38:00) [7]

Stanislav ©   (29.04.05 16:34) [62] - узнавать ID до вставки - общепринятая практика, я сам так в Oracle частенько делаю. Только тогда нужно юзать сиквенсы или использовать способ msguns, если сиквенсы сервер не поддерживает. И в этом случае, если кто то инсертит паралельно запись в нашу таблицу, он получит другой ID. А вот твоя идея с max привет к одному ID или, что еще хуже, ты получишь не свой. Max прокатит, только если ты уверен, что работаешь один.


Stanislav   (2005-04-29 16:34:00) [8]

Я все равно не пойму кому нужно узнавать значение AI до...
Ну, допустим ты его узнал, получил и что дальше, а если в этот момент кто-то вставил новую запись в таблицу ?
..ибо MSSQL это вам не однопользовательский парадокс (Max Zyuzin ©
)


msguns   (2005-04-29 16:23:00) [9]

>Stanislav ©   (29.04.05 16:21) [60]

Стас, да идея-то ясна ! Чего уж жевать ?
Думаю, что Макс уж сам сообразит-то ;))


Stanislav   (2005-04-29 16:21:00) [10]

msguns ©   (29.04.05 16:12) [57]
Если б миф..
Каждому решению должна быть алтернатива.
И кто сказал что Max(id) будет работать медленее или отнимать больше ресурсов ?
Max Zyuzin ©   (29.04.05 16:14) [59]

Begin Transaction
--master
Insert...
@NEWID = ...
--detail
insert @newid...
...
...
Commit Transaction / rollback transaction


Max Zyuzin   (2005-04-29 16:14:00) [11]

>Stanislav ©   (29.04.05 16:06) [55]
Что бы вставлять например записи в master-detail в одной транзакции.


msguns   (2005-04-29 16:12:00) [12]

>Polevi ©   (29.04.05 16:03) [54]
>рождается миф от msguns "Тяжела как беременная свинья, что в инстале, что в работе"

Если б миф..

>Stanislav ©   (29.04.05 16:06) [55]
>Также как и [5].
>Зачем узнавать значение  ID до ?

В принципе незачем. Если можно узнать ВМЕСТЕ. Я, к примеру, этого не знал ;(


Max Zyuzin   (2005-04-29 16:12:00) [13]

>msguns ©   (29.04.05 16:09) [56]
Ой ля ля :). Имелось ввиду вариант работы одним единсвенным пользователем.


msguns   (2005-04-29 16:09:00) [14]

>Max Zyuzin ©   (29.04.05 15:58) [53]
>это вам не однопользовательский парадокс.

Ой ля-ля ?


Stanislav   (2005-04-29 16:06:00) [15]

Также как и [5].
Зачем узнавать значение  ID до ?


Polevi   (2005-04-29 16:03:00) [16]

>Max Zyuzin ©   (29.04.05 15:58) [53]

г. Stanislav © имеет большой опыт работы с сервером от Microsoft
после >Stanislav ©   (29.04.05 14:36) [40] рождается миф от msguns "Тяжела как беременная свинья, что в инстале, что в работе"


Max Zyuzin   (2005-04-29 15:58:00) [17]

Ну вы еще подеритесь...
>Stanislav ©   (29.04.05 15:53) [52]
Конструкция типа [40] не верна упринципе идеологически, ибо MSSQL это вам не однопользовательский парадокс.


Stanislav   (2005-04-29 15:53:00) [18]

Ну, вот. А я давал ответ на вопрос поставленный ST см. [38],
как альтернатива [5]. Если это будет выполнятся одной х.п.,то 100% он узнает правильный ID.
А остальное уже отклонение от темы. А появление Polevi в этой ветке вообще глупо.


ANB   (2005-04-29 15:52:00) [19]


> идея о получении ID до вставки и даже без.
- у меня есть на идея :))) Переходи на Oracle. Там сиквенсы есть. И никаких проблем.


msguns   (2005-04-29 15:39:00) [20]

>Stanislav ©   (29.04.05 15:33) [49]
>Я так понимаю человеку нужно узнать ID записи,которая была вставлена командой Insert.

Если бы вопрос стоял так, то исчерпывающий ответ дан в [5]. А дальше обсуждалась еще пущенная мною (а зря) идея о получении ID до вставки и даже без. Просто это довольно часто поднимаемая трабла, единого решения которой до сих пор нет, как вариант почитай посты Max Zyuzin ©


Страницы:   1 2 3 4

Наверх

Титульная страница Поиск, карта сайта Написать письмо