Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2003.03.27;
Скачать: CL | DM;

Вниз

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

 
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;
Скачать: CL | DM;

Наверх




Память: 0.47 MB
Время: 0.011 c
7-88277
BJValentine
2003-02-04 18:45
2003.03.27
Событие Scroll


8-88092
SaperXL
2002-12-15 02:12
2003.03.27
нужна быстрая графика , желательно на основе компонентов


1-87938
Карелин Артем
2003-03-17 16:50
2003.03.27
Действия над 15-значными числами.


7-88279
Николай В.
2003-02-03 16:11
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
Английский Французский Немецкий Итальянский Португальский Русский Испанский