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

Вниз

Установка значения generator   Найти похожие ветки 

 
stkatch   (2003-05-12 11:32) [0]

Уважаемые мастера!

Можно ли установить значение generatora в процедуре IB?
Установка "в лоб":

CREATE PROCEDURE SetGenerator
BEGIN
SET GENERATOR generator_1 TO 0;
END

не проходит :-(


 
Johnmen ©   (2003-05-12 11:38) [1]

CREATE PROCEDURE SetGenerator
DECLARE VARIABLE NG INTEGER;
BEGIN
NG=GenId(generator_1,-GenId(generator_1,0));
END


 
Johnmen ©   (2003-05-12 11:40) [2]

Конечно же GEN_ID ! :)))


 
Zacho ©   (2003-05-12 11:42) [3]


> stkatch (12.05.03 11:32)

В Yaffil - можно и SET GENERATOR в ХП.
А ты уверен, что нужно ?
Генераторы работают вне контекста транзакций, поэтому при многопользовательской работе вполне можешь получить аномалии.


 
stkatch   (2003-05-12 11:53) [4]

> Zacho
Вообще мне нужен счетчик, который пользователь мог бы обнулить по своему желанию


 
Zacho ©   (2003-05-12 11:59) [5]


> stkatch (12.05.03 11:53)

Хорошенько подумай, не возникнет ли каких-либо коллизий при многопользовательской работе. И еще момент: в качестве счетчика генераторы мало подходят, т.к. откат транзакции никак не изменяет значение генератора. Хотя, может именно для твоей задачи и подойдет.


 
Соловьев ©   (2003-05-12 12:05) [6]


> Вообще мне нужен счетчик, который пользователь мог бы обнулить
> по своему желанию

жестоко ты со счетчиком... а он отвечает за PK? или просто так?
может для PK - пусть работает, а для юзера свой завести? что хоть за задача?


 
stkatch   (2003-05-12 12:10) [7]

> Соловьев
Конечно для PK свой отдельный генератор. Суть в следущем. Есть список заказов у которых должно быть два идентификационных номера: глобальный (PK) и второй, в рамках смены. Когда смена закрывается счетчик должен обнуляться и в следущей смене опять начинаться с единицы. А какие еще возможны варианты?


 
Zacho ©   (2003-05-12 12:15) [8]


> stkatch (12.05.03 12:10)

Все зависит от того, как должна идти нумерация. В случае с генератором: пользователь вносит новый заказ. По каким-либо причинам транзакция откатывается. В результате получается "дырка" в нумерации заказов. Если такое устраивает - генераторы самое то.


 
Соловьев ©   (2003-05-12 12:16) [9]


> А какие еще возможны варианты?

вычислять номер - не просто число, а например дата+время или еще чего-нибудь.


 
stkatch   (2003-05-12 12:25) [10]

> Zacho
Да дырки это не очень приятно, и являются основной проблемой. А вообще есть какие нить элегантные способы вести возрастающую целочисленную уникальную нумерацию без пропусков?


 
Zacho ©   (2003-05-12 12:31) [11]


> stkatch (12.05.03 12:25)

Элегантных - нет. Общий способ:
Работа с таблицей в "однопользовательском" режиме. (Т.е. блокирование модификации данных другими транзакциями до окончания создания документа)
Запрет изменения номеров в уже введенных документах.
Запрет удаления документов, или перерасчет номер после удаления.


 
stkatch   (2003-05-12 12:35) [12]

А как в IB заблокировать таблицу на вставку данных?


 
Zacho ©   (2003-05-12 12:40) [13]

Смотри http://www.ibase.ru/devinfo/pslock.htm и http://www.ibase.ru/devinfo/ibtrans.htm


 
stkatch   (2003-05-12 12:55) [14]

> Zacho
Спасиб!



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

Текущий архив: 2003.05.29;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.015 c
14-95098
zhenya
2003-05-11 20:20
2003.05.29
Регенерация текста?


14-95076
Nick Denry
2003-05-10 00:30
2003.05.29
Насколько реально написать свою ОС?


1-94944
edicon
2003-05-18 01:42
2003.05.29
Формат Даты


1-94905
sevylor
2003-05-17 05:27
2003.05.29
OS


4-95164
LyzD
2003-03-30 17:01
2003.05.29
Добавить свою кнопку в заголовок окна...