![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
INSERT в MSSQL [D7, MSSQL]
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 ©