![]() |
Модераторы: gambit |
![]() ![]() ![]() |
|
Ruslan_ |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 75 Регистрация: 4.12.2004 Репутация: нет Всего: нет |
Приветствую!
Как получить последнюю добавленную строку (или точнее говоря ее первичный ключь), используя драйвер ODBC. Есть какой-то универсальный метод для любой БД? Я разрабатываю ПО для работы с СУБД Access и Postgres. Заранее благодарю. |
|||
|
||||
MasterOfCode |
|
|||
![]() elwin ![]() ![]() Профиль Группа: Участник Сообщений: 740 Регистрация: 24.4.2008 Где: World.Russia.Tyum en Репутация: 4 Всего: 27 |
Так. -------------------- ![]() |
|||
|
||||
Idsa |
|
|||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 2086 Регистрация: 5.12.2006 Где: Томск Репутация: 15 Всего: 62 |
MasterOfCode, читайте внимательнее. Необходим универсальный способ под ODBC.
|
|||
|
||||
Ruslan_ |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 75 Регистрация: 4.12.2004 Репутация: нет Всего: нет |
Если нет (а я уже искал везде, где только можно), можете сказать, как получить строку (или ключевое поле) последней добавленной строки в Access?
В Postgres все понятно: следующее значение из последовательности использовать как значение ключегого поля при вставке строки. |
|||
|
||||
MasterOfCode |
|
|||
![]() elwin ![]() ![]() Профиль Группа: Участник Сообщений: 740 Регистрация: 24.4.2008 Где: World.Russia.Tyum en Репутация: 4 Всего: 27 |
Простите за невнимательность. Не знаю как в Access, есть ли там Тригерры и Процедуры, если есть, то можно добавить в таблицу поле например DATE_INSERT типа DateTime, написать триггер который при вставке добавлял дату вставки, и Хранимую процедуру (функцию) на вставку, которая бы добавляла запись, а в качестве возвращаемого параметра возвращала ID записи.
-------------------- ![]() |
|||
|
||||
Idsa |
|
|||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 2086 Регистрация: 5.12.2006 Где: Томск Репутация: 15 Всего: 62 |
Так можно сделать и в Access: там есть поле типа "Счетчик". Но это неверный подход: между тем, как Вы считаете значение, и сделаете вставку, кто-нибудь может изменить таблицу. |
|||
|
||||
Ruslan_ |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 75 Регистрация: 4.12.2004 Репутация: нет Всего: нет |
Как у этого поля типа "Счетчик" запросить следующее значение перед вставкой?
|
|||
|
||||
Idsa |
|
|||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 2086 Регистрация: 5.12.2006 Где: Томск Репутация: 15 Всего: 62 |
Ruslan_, а зачем? Оно само выставляется, когда вставляется запись. А в INSERT это поле не указывается.
|
|||
|
||||
Varenij |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 32 Регистрация: 21.3.2007 Репутация: нет Всего: нет |
||||
|
||||
Idsa |
|
|||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 2086 Регистрация: 5.12.2006 Где: Томск Репутация: 15 Всего: 62 |
||||
|
||||
Ruslan_ |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 75 Регистрация: 4.12.2004 Репутация: нет Всего: нет |
Idsa, знать значение первичного ключа мне необходимо для того, чтобы с добавленной записью в таблице связать записи из др. таблиц, связанных отношением первичный-внешний ключ. А иначе не получится.
На самом деле не важно: сгенерировать следующее значение для счетчика и вставить строку с этим значением или же вставить строку и узнать ее ид. - не важно. Просто нужно получить любыми способами добавленную строку. Здесь ведь есть программисты для БД. Скажите, пожалуйста, как вы делаете это для Access (если нет общего механизма для любой БД)? (Просто в Access нет типа последовательность, как в Oracle или Postgres.) |
|||
|
||||
Ruslan_ |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 75 Регистрация: 4.12.2004 Репутация: нет Всего: нет |
Это просто важно очень.
Как получить последнюю добавленную строку в Access'е? |
|||
|
||||
Ruslan_ |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 75 Регистрация: 4.12.2004 Репутация: нет Всего: нет |
Если кто-то столкнется с такой же проблемой, опишу мое решение.
В зависимости от того, какая СУБД используется, для Oracle и Postgres я перед добавлением новой записи предварительно получаю ее ид. из последовательности; для Access'а получаю максимальный ид. и использую на 1 больше. Access открываю в монопольном режиме. Использую драйвер ODBC. |
|||
|
||||
![]() ![]() ![]() |
Прежде чем создать тему, посмотрите сюда: | |
|
Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов. Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, stab, mr.DUDA, Exception. |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Базы данных под .NET | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |