Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 2003.03.27;
Скачать: [xml.tar.bz2];

Вниз

Доступ к значению генератора   Найти похожие ветки 

 
Jaxtor   (2003-03-06 15:20) [0]

Есть ли возможность доступа из приложения-клиента к значению генератора в InterBase 6.0?


 
Val   (2003-03-06 15:27) [1]

да. как минимум, можно посмотреть текущее значение из системной таблицы:
select distinct gen_id(CUST_NO_GEN, 0) from RDB$GENERATORS;


 
Johnmen   (2003-03-06 15:30) [2]

>Val © (06.03.03 15:27)

Нет, это не смотрение системной таблицы :)

select gen_id(CUST_NO_GEN, 0) from <любая таблица, имеющая одну запись> (напр. rdb$database)


 
Jaxtor   (2003-03-06 15:30) [3]

Ясненько, нужно мне углубленно читать документацию по INTERBASE...


 
Val   (2003-03-06 15:53) [4]

>Johnmen © (06.03.03 15:30)
м.б. пример не мой, из доки под рукой взял, признаюсь честно :)


 
Жук   (2003-03-06 15:59) [5]

select gen_id(<имя генератора>,1) from rdb$database - получить следующее значение.


 
Johnmen   (2003-03-06 16:04) [6]

>Жук © (06.03.03 15:59)

Нет, не следующее, а большее текущего на 1.
;)))))))))))))))))


 
Жук   (2003-03-06 16:06) [7]

2 Johnmen © (06.03.03 16:04)
Если ЭТО - не следующее, то какое ?
2 Jaxtor © (06.03.03 15:20)
>Есть ли возможность доступа из приложения-клиента к значению >генератора в InterBase 6.0?
Есть ! :-)


 
Val   (2003-03-06 16:06) [8]

>Johnmen © (06.03.03 15:30)
.. from <любая таблица, имеющая одну запись>..
проверил - RDB$GENERATORS имеет не одну запись.


 
Val   (2003-03-06 16:08) [9]

>Жук © (06.03.03 16:06)
у генераторов могут быть разные приращения, не обязательно 1.


 
Johnmen   (2003-03-06 16:23) [10]

>Val © (06.03.03 16:06)

Поэтому и distinct... И для наращивания не годится...:)
Лично я (что уже неоднократно в конфе приводил) сделал бы через ХП :
CREATE PROCEDURE CurrentValueOfMyGen RETURNS (currentvalue INT)
AS BEGIN
currentvalue=GEN_ID(MyGen,0);
END
Развязываемся от к.-л.таблиц...


 
Val   (2003-03-06 16:26) [11]

>Johnmen © (06.03.03 16:23)
согласен


 
Sergey Masloff   (2003-03-06 16:29) [12]

Val © (06.03.03 16:06)
>.. from <любая таблица, имеющая одну запись>..
>проверил - RDB$GENERATORS имеет не одну запись.
Ну и получишь столько дерганий функции сколько записей в таблице.

hint таблица rdb$database ВСЕГДА имеет 1 запись.


 
Val   (2003-03-06 16:35) [13]

>Sergey Masloff (06.03.03 16:29)
уже разобрались :)


 
Sergey Masloff   (2003-03-06 16:56) [14]

Val ©
>уже разобрались :)
я в запарке невнимательно посмотрел на ответы.


 
zacho   (2003-03-06 18:20) [15]

А что бы не вводить в заблуждение новичков, стоило бы еще добавить, что для генерации первичного ключа использовать GEN_ID(MY_GEN,0) не стоит. Как минимум GEN_ID(MY_GEN, 1) :-)
Кстати, меня всегда интеросовало, а для каких реальных целей может потребоваться текущее значение генератора ?


 
Johnmen   (2003-03-06 21:34) [16]

>zacho © (06.03.03 18:20)

Если пофантазировать, то, например, хранить в генераторе некоторый изменяемый настроечный параметр...


 
Desdechado   (2003-03-10 16:37) [17]

вообще-то можно генератор выставить в MAXINT, а потом декрементировать GEN_ID(MY_GEN,-1)
это ж первичный ключ будет, его величина никого не интересует.
можно попробовать (сам не делал) и отрицательные значения этой функцией получать :)


 
Desdechado   (2003-03-11 10:52) [18]

2 Johnmen © (06.03.03 21:34)
настройки лучше все-таки в спецтаблице хранить, т.к. права на генератор не раздаются, а глобальные настройки требуют некоторых привилегий :)


 
Johnmen   (2003-03-11 11:03) [19]

>Desdechado © (11.03.03 10:52)

Никто не спорит ! А фантазирует...:)



Страницы: 1 вся ветка

Форум: "Базы";
Текущий архив: 2003.03.27;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.48 MB
Время: 0.008 c
1-87971
boa
2003-03-17 13:38
2003.03.27
Как программно закрыть меню формы (TMainMenu)


1-87918
Kaginava
2003-03-17 08:16
2003.03.27
TRadioButton


14-88191
VL
2003-03-10 18:38
2003.03.27
Поделитесь компонентой TreeView


1-87925
sanekk
2003-03-17 13:12
2003.03.27
Запуск приложения


3-87793
Behemoth
2003-03-07 12:01
2003.03.27
Поможите настроить псевдоним через ODBC





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский