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

Откуда: Москва
Сообщений: 2653
Здравствуйте.

1. Представьте таблицу requests с атрибутами (contents varchar(1000), id integer identity(1,1)).
2. Данные добавляются постоянно, разными людьми.
3. Мы делаем INSERT
4. Как мне вернуть id текущей добавленной записи ? Сколькими способами это можно сделать ?

Спасибо
6 мар 14, 04:48    [15680323]     Ответить | Цитировать Сообщить модератору
 Re: Номер добавленной записи  [new]
SashaMercury
Member

Откуда: Москва
Сообщений: 2653
И каким способом/почему на ваш взгляд это лучше делать ?
6 мар 14, 04:53    [15680325]     Ответить | Цитировать Сообщить модератору
 Re: Номер добавленной записи  [new]
Ruuu
Member

Откуда: Иркутск
Сообщений: 4272
SashaMercury
И каким способом/почему на ваш взгляд это лучше делать ?
Посмотреть TOP 10 вопросов.
6 мар 14, 05:40    [15680337]     Ответить | Цитировать Сообщить модератору
 Re: Номер добавленной записи  [new]
SashaMercury
Member

Откуда: Москва
Сообщений: 2653
Ruuu, спасибо :) Конечно-же я давно ознакомился с ТОП-10.
Но я не верю что до сих пор не появилось нормальных методов для возврата id только что добавленной записи. Неужели все делают так как пишут в топ10 ?

PS
представляется f e конструция: select id from (insert ...)\
6 мар 14, 06:30    [15680347]     Ответить | Цитировать Сообщить модератору
 Re: Номер добавленной записи  [new]
Ruuu
Member

Откуда: Иркутск
Сообщений: 4272
SashaMercury,

а что ненормально в:
insert into ...

select scope_identity()

?
У вас на таблице есть INSTEAD OF триггер?

Если записей вставляется больше одной, то смотрите OUTPUT Clause
6 мар 14, 06:54    [15680359]     Ответить | Цитировать Сообщить модератору
 Re: Номер добавленной записи  [new]
HandKot
Member

Откуда: Sergiev Posad
Сообщений: 3058
SashaMercury
Ruuu, спасибо :) Конечно-же я давно ознакомился с ТОП-10.
Но я не верю что до сих пор не появилось нормальных методов для возврата id только что добавленной записи. Неужели все делают так как пишут в топ10 ?

PS
представляется f e конструция: select id from (insert ...)\


OUTPUT Clause, как сказал Ruuu и есть Ваш эквивалент SELECTа и не надо ничего придумывать

create table #t (i int identity)

insert into #t
output inserted.i
default values
6 мар 14, 08:07    [15680420]     Ответить | Цитировать Сообщить модератору
 Re: Номер добавленной записи  [new]
SashaMercury
Member

Откуда: Москва
Сообщений: 2653
Мне не нравится. Все делают так ? Нет смысла изобретать велосипед ?

Ruuu
У вас на таблице есть INSTEAD OF триггер?


нет
6 мар 14, 08:40    [15680455]     Ответить | Цитировать Сообщить модератору
 Re: Номер добавленной записи  [new]
SashaMercury
Member

Откуда: Москва
Сообщений: 2653
HandKot, вот так нравится больше
6 мар 14, 08:41    [15680457]     Ответить | Цитировать Сообщить модератору
 Re: Номер добавленной записи  [new]
dma_caviar
Member

Откуда: https://itproduct.ru
Сообщений: 2361
Если в таблице не сто тыщь мильонов записей, то сделать id с типом uniqueidentifier и генерить id на клиенте.
6 мар 14, 08:53    [15680474]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить