![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
ID последней добавленной записи [D7, любая СУБД]
DVM © (2008-09-04 12:03:00)Вопрос тут уже вроде всплывал тут, но в основном касался каких то конкретных СУБД, например Access. Мне же нужен по возможности универсальный вариант, ну пусть хотя бы одинаково работающий в Access, MySQL, MSSQL, Oracle.
Посредством SQL запроса в таблицу добавляется некая запись. Одним из полей таблицы является автоинкрементное поле счетчик (ID).
После добавления записи в таблицу мне нужно получить значение поля ID для этой добавленной записи.
Как в таких случаях обычно поступают? Писать разный код для разных СУБД? Ввести свое доп. поле в которое пихать собственноручно сгенерированное чудо типа GUID и сразу после добавления находить запись по этому полю?
Игорь Шевченко (2008-09-04 12:24:00) [81]
> Писать разный код для разных СУБД?
Да
stas (2008-09-04 12:22:00) [82]DVM © (04.09.08 12:03)
наверное такой:
после вставки
select max(ID) from mytable
DVM (2008-09-04 12:18:00) [83]
> Ega23 © (04.09.08 12:12) [2]
> 1. Сам тип автоинкримента может быть разным (int и bigint,
> serial и bigserial и т.п.).
Ну int или подобный есть везде вроде.
> 2. Его (автоинкримента) может и не быть как такового в СУБД.
Я не замахиваюсь на вообще все СУБД. В тех что я написал есть по крайней мере.
> 3. И GUID СУБД тоже может не уметь генерить (например, Postgres
> в поставке по-умолчанию не умеет, т.к. есть несколько способов).
>
Так сам генерить буду и в запрос буду пихать.
> Я бы в такой ситуации на клиенте какое-нибудь уникальное
> значение генерил.
Да я помню ветку про GUID-ы. Пока рассматриваю как основной вариант. Хотя совпадения возможные совсем не радуют.
DVM (2008-09-04 12:14:00) [84]
> слишком бессмысленно
Может и бессмысленно, но хотелось бы абстрагировать несложное ПО от конкретной СУБД. Или хотя бы свести к минимуму переделки под другую СУБД.
> хотя иногда может помочь уникальная комбинация записываемых
> полей, еслиона есть, конечно
такая мысль была, но комбинации полей не уникальны.
Ega23 (2008-09-04 12:12:00) [85]
> Посредством SQL запроса в таблицу добавляется некая запись.
> Одним из полей таблицы является автоинкрементное поле счетчик
> (ID).
> После добавления записи в таблицу мне нужно получить значение
> поля ID для этой добавленной записи.
1. Сам тип автоинкримента может быть разным (int и bigint, serial и bigserial и т.п.).
2. Его (автоинкримента) может и не быть как такового в СУБД.
3. И GUID СУБД тоже может не уметь генерить (например, Postgres в поставке по-умолчанию не умеет, т.к. есть несколько способов).
Я бы в такой ситуации на клиенте какое-нибудь уникальное значение генерил.
Правильный$Вася (2008-09-04 12:07:00) [86]
> Мне же нужен по возможности универсальный вариант
слишком бессмысленно
хотя иногда может помочь уникальная комбинация записываемых полей, еслиона есть, конечно