Главная страница
    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.009 c
1-87947
D_Erlan
2003-03-17 16:14
2003.03.27
Hint


3-87852
Владимир
2003-03-07 11:41
2003.03.27
InterBase


3-87823
Злодей
2003-03-08 12:05
2003.03.27
BDE


6-88126
Лилой
2003-01-29 15:34
2003.03.27
Как проверить подключен ли компьютер к Интренету


14-88224
godfather
2003-03-11 11:57
2003.03.27
надо ли платить





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский