Главная страница
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.51 MB
Время: 0.014 c
7-88267
Ifrit
2003-02-03 19:45
2003.03.27
RTF--->Word и обратно


1-88029
Yorick
2003-03-10 11:14
2003.03.27
Перетаскование формы


14-88200
Andrey
2003-03-11 13:19
2003.03.27
Где можно почитать про OLE1


14-88136
Ketmar
2003-03-04 13:43
2003.03.27
система с замкнутым циклом для обеспечения жизнедеятельности...


6-88125
D.V.K
2003-01-23 13:28
2003.03.27
Как возобновить копирование файла после падения локальной сети