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

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

Значение первичного ключа [MSSQL]


Kerk ©   (2004-10-18 13:34:00) 

Как можно определить сабж последней добавленной записи?
Способ через @@IDENTITY не катит, ибо не надежно,


Ega23   (2004-10-19 14:44:00) [1]

Select @X=Max(IsNull(UID))+1 from Table1


Kerk   (2004-10-19 14:41:00) [2]


> К стати, @@IDENTITY возвращает не значение первичного ключа,
> а поля, у которого проставлено Identity (автосчетчик)

Ну как раз это я и имел введу.
Всем спасибо. Вопрос решен.


Пуртик   (2004-10-18 14:25:00) [3]

Выполнить в том же запросе на вставку.


Пуртик   (2004-10-18 14:24:00) [4]

select ident_current(<table_name>)


Vir   (2004-10-18 14:08:00) [5]

Ладно ладно возможно не понял вопрос - просто я подобную процедуру использовал для синхронизации таблиц в разных базах.


KSergey   (2004-10-18 14:04:00) [6]

> Как можно определить сабж последней добавленной записи?

К стати, @@IDENTITY возвращает не значение первичного ключа, а поля, у которого проставлено Identity (автосчетчик)


MOA   (2004-10-18 14:04:00) [7]

2Vir - и получим чужую запись в некоторых случаях (записали - кто-то записал в ту же таблицу - считываем по МАХ чужую запись)
>возвращает значение относительно всей СУБД
Зато именно "относительно" текущей сессии. Хотя чаще лучше mcr (18.10.04 13:39) [1]
Удачи!


Sergey13   (2004-10-18 14:00:00) [8]

2[5] Vir   (18.10.04 13:50)
>Я делал по иному.
Я извиняюсь, с MSSQL никогда не работал, но не получишь ли ты при таком подходе последную кем-то другим редактированную или добавленную запись


Vir   (2004-10-18 14:00:00) [9]

Reindeer Moss Eater ©   (18.10.04 13:57) [6]
Только не обязательно добавленную тобой.


А не кто и не говорил что нужна запись добавленная именно тобой.


Reindeer Moss Eater   (2004-10-18 13:57:00) [10]

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

Только не обязательно добавленную тобой.


Vir   (2004-10-18 13:50:00) [11]

Я делал по иному.
В таблице вводил поле типа timestamp - оно атоматически правиться MSSQL при изменении записи.
тогда выбрав запись MAX значением этого поля получишь последную редактированную или добавленную запись.


KSergey   (2004-10-18 13:48:00) [12]

Я бы другое спросил: почему "не надежно"?? Это что-то новенькое....
А вообще от версии сервера зависит
Для 7 - только @@IDENTITY, для 2000 - лучше Scope_Identity()

Тольлько надо четко для себя понять что значит и в каком смысле "лучше"


Reindeer Moss Eater   (2004-10-18 13:47:00) [13]

не катит, ибо не надежно,

Сначала получить значение для PK, потом вставить запись с известным PK.


Kerk   (2004-10-18 13:46:00) [14]

@@IDENTITY AFAIK возвращает значение относительно всей СУБД.

> Scope_Identity()

Не знал о такой. Сейчас в MSDN посмотрю.


mcr   (2004-10-18 13:39:00) [15]

А почему 'не катит'
Scope_Identity()
?


Наверх

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