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

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

Каким образом получить только что вставленную в таблицу базы? [MSSQL]


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

Lex_! ©   (2006-06-21 10:39:00) 

Доброго времени суток.
Вопрос собственно: каким образом можно получить только что вставленную запись? Допустим в запросе, при вставлении записи генерируется id (уникальный идентификатор вида: {F3758C08-7BA6-4251-8BC3-C2A4476E17D3}) - каким образом можно сразу же получить этот идентификатор? (с момента вставки записи и до момента выполнения запроса на выборку может быть вставлено еще несколько записей... )


Ega23   (2006-06-21 11:38:00) [41]


> функция newid работает как генератор - вне контекста транзакций?


NEWID
Creates a unique value of type uniqueidentifier.

А в констексте транзакции или нет - какая, собственно говоря, разница?

З.Ы. В MSSQL нет генераторов.


Ega23   (2006-06-21 11:35:00) [42]


> не вижу ЛОЛа, два человека открывают страницу, выполняется
> два экземпляра кода, в разных потоках, и одновременно вполне
> может выполняться и с десяток таких запросов...


Запросы не могут выполнятся ОДНОВРЕМЕННО. Как минимум из-за того, что процессор - один. Всегда есть очередь исполнения. Если код в [2] выполнять одним запросов, то хоть миллион пользователей в одну секунду обратятся к БД - всё выполнится строго по очереди.


> GUID всегда дается разный? ...


Естественно.


Val   (2006-06-21 11:34:00) [43]

>[9] Ega23 ©   (21.06.06 11:30)
функция newid работает как генератор - вне контекста транзакций?


Lex_!   (2006-06-21 11:33:00) [44]


> > Просто одновременно могут выполняться запросы два одинаковых
>
>
> ЛОЛ

не вижу ЛОЛа, два человека открывают страницу, выполняется два экземпляра кода, в разных потоках, и одновременно вполне может выполняться и с десяток таких запросов...

GUID всегда дается разный? ...


Ega23   (2006-06-21 11:30:00) [45]


> Просто одновременно могут выполняться запросы два одинаковых


ЛОЛ


> и одновременно в двух получится одинаковый guid


А это - просто шедевр. GUID он потому GUID и называется.


Lex_!   (2006-06-21 11:25:00) [46]

Просто одновременно могут выполняться запросы два одинаковых .. и одновременно в двух получится одинаковый guid


Lex_!   (2006-06-21 11:24:00) [47]

Хотя будем надеяться, что все будет ок...
Спасибо, пойду попробую ..


Ega23   (2006-06-21 11:24:00) [48]


> Select @GUID=newid()
> ..... та же проблема, запросов ОЧЕНЬ много, не факт что
> до вставки записи не произойдет генерации идентификатора
> дважды...
> Insert into Table (ID, .....)
> Values (@GUID, .....)
>
> или я опять чего - то не понимаю. ..
>

Я ткбк полный текст привёл. Между Select @GUID=newid() и Insert не должно быть ничего.


Lex_!   (2006-06-21 11:18:00) [49]

Select @GUID=newid()
..... та же проблема, запросов ОЧЕНЬ много, не факт что до вставки записи не произойдет генерации идентификатора дважды...
Insert into Table (ID, .....)
Values (@GUID, .....)

или я опять чего - то не понимаю. ..


Ega23   (2006-06-21 11:02:00) [50]


> Вообще значение заполняется автоматически ID:uniqueidentifier:
> (newid())


Если так, то никак.


Ega23   (2006-06-21 11:01:00) [51]


> Доброго времени суток.
> Вопрос собственно: каким образом можно получить только что
> вставленную запись? Допустим в запросе, при вставлении записи
> генерируется id (уникальный идентификатор вида: {F3758C08-
> 7BA6-4251-8BC3-C2A4476E17D3}) - каким образом можно сразу
> же получить этот идентификатор? (с момента вставки записи
> и до момента выполнения запроса на выборку может быть вставлено
> еще несколько записей... )


Set NoCount ON
Declare @GUID uniqueidentifier
Select @GUID=newid()
Insert into Table (ID, .....)
 Values (@GUID, .....)
Set NoCount OFF
Select GUID=@GUID


Lex_!   (2006-06-21 10:57:00) [52]

Вообще значение заполняется автоматически ID:uniqueidentifier:(newid())
т.е. я просто вставляю запись (вообще без значений) все поля заполняются сами, но ... нужно сразу же взять ID и отправить его клиенту (это всё делается в ISAPI dll)....
Возможно я чего-то не понял ... на примере если можно покажи


Sergey13   (2006-06-21 10:42:00) [53]

Получить новый идентификатор передвставкой.


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

Наверх

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