Re: Multi Doc Numeration

2006-09-13 Пенетрантность Konstantin R. Beliaev
Oleg LOA wrote: В данном случае можно создать генератор номеров у которго будет своя таблица. Я когда-то даже придумал такой, http://konstb.newmail.ru/interbase/gennum.htm а все тут спросили: ну и зачем? :-)

Re: Multi Doc Numeration

2006-09-08 Пенетрантность Oleg LOA
Константин [EMAIL PROTECTED] wrote in message news:[EMAIL PROTECTED] А если серьёзно, кто что думает по этому поводу ? Предлагаю подумать на следующие темы самостоятельно; 1) Сериализация доступа к механизму создания новых номеров 2) Параметрытранзакции lock_writе и wait

Re: Multi Doc Numeration

2006-09-07 Пенетрантность Alexey Popov
Тебе нужна сериализация. При генерации нового документа запускаешь транзакцию с параметрами wait lock_write=имя_некой_таблицы protected Такие транзакции будут сериализованы. Внутри вычисляешь номер нового документа обычными sql операторами. -- --- Home Page http://ok.novgorod.net/ap ---

Re: Multi Doc Numeration

2006-09-07 Пенетрантность Ded
Константин wrote: Вопрос: когда я, с таким подходом, напорюсь на грабли ? И на какие ? CREATE PROCEDURE DOC_PROVODKA ( doc_id bigint) as declare variable i bigint; declare variable tid bigint; declare variable ftid bigint; begin // Stop - семафор, // sleep - UDF наподобие

Re: Multi Doc Numeration

2006-09-07 Пенетрантность Ded
Alexey Popov wrote: Тебе нужна сериализация. При генерации нового документа запускаешь транзакцию с параметрами wait lock_write=имя_некой_таблицы protected Такие транзакции будут сериализованы. Внутри вычисляешь номер нового документа обычными sql операторами. Мля, на колу мочало,

Re: Multi Doc Numeration

2006-09-07 Пенетрантность Shiliaev Ruslan
Константин пишет: Hi, многоуважаемый All! Есть табличка шапок документов скажем CREATE TABLE DOC ( IDBIGINT, TYPE_ID BIGINT, DATE_DOC TIMESTAMP, NUM BIGINT, UserNUM BIGINT, From_ID BIGINT, TO_ID BIGINT, ... ); 1) Есть условие что нумерация (NUM) для каждого

Re: Multi Doc Numeration

2006-09-07 Пенетрантность Alexey Popov
Ded wrote: Такие транзакции будут сериализованы. Внутри вычисляешь номер нового документа обычными sql операторами. Мля, на колу мочало, начинай сначала, 2001-й год вроде, учител Йода вернулся. Чтоб удержать одну запись, крайне необходимо блокировать таблицу целиком. МП, крутани ПНХ

Re: Multi Doc Numeration

2006-09-07 Пенетрантность Sergiy S. Tkachenko
Что если создавать для каждого нового типа документов свой генератор, по аналогии как в Firebird создаются домены RDB$X

Re: Multi Doc Numeration

2006-09-07 Пенетрантность Ded
Константин wrote: По типу документа ещё можно ... А по контрагенту ? Что скажут кодописатели насчёт ~5000 генераторов ? :) Я не знаю точно, но какое-то ограничение на к-во генераторов существует же ... Странный ты, ей-богу. Тыщу раз говорили ведь - при создании

Re: Multi Doc Numeration

2006-09-07 Пенетрантность Sergey Philippov
Константин пишет: // Stop - семафор, // sleep - UDF наподобие Application.ProcessMessages в Delphi while (gen_id(stop, 0) 0)) do sleep(100); i = gen_id(stop, 1); Хм, sleep... Чего уж мелочиться, давай сразу CreateMutex/WaitForSingleObject/ReleaseMutex :) -- wbr, ps ps-at-azs-ru