Константин пишет:
Hi, многоуважаемый All!
Есть табличка шапок документов скажем
CREATE TABLE DOC ( ID BIGINT, TYPE_ID BIGINT, DATE_DOC
TIMESTAMP, NUM BIGINT, UserNUM BIGINT, From_ID BIGINT,
TO_ID BIGINT, ........... );
1) Есть условие что нумерация (NUM) для каждого типа документов
(type_id) должна быть уникальной
2) Есть условие что для каждого контрагента получателя (To_ID), в
зависимости от типа документа (Type_id) идёт своя нумерация
Привет!
Заведи таблицу с номерами для разных получателей и типов документов:
CREATE TABLE DOC_NUM(
TO_ID BIGINT NOT NULL,
TYPE_ID BIGINT NOT NULL,
MAX_DOC_NUM INT NOT NULL);
ALTER TABLE DOC_NUM ADD CONSTRAINT PK_DOC_NUM PRIMARY KEY (TO_ID, TYPE_ID);
В триггере на BI что то типа:
...
IF (EXISTS(SELECT 1 FROM DOC_NUM WHERE TO_ID = NEW.TO_ID AND TYPE_ID =
NEW.TYPE.ID)) THEN
UPDATE DOC_NUM SET MAX_DOC_NUM = MAX_DOC_NUM + 1 WHERE TO_ID =
NEW.TO_ID AND TYPE_ID = NEW.TYPE.ID;
ELSE
INSERT INTO DOC_NUM(TO_ID, TYPE_ID, MAX_DOC_NUM) VALUES (NEW.TO_ID,
NEW.TYPE_ID, 1);
SELECT MAX_DOC_NUM FROM DOC_NUM WHERE TO_ID = NEW.TO_ID AND TYPE_ID =
NEW.TYPE.ID INTO NEW.NOM;
И пиши в коротких R/C транзакциях. В случае облома - sleep(100) и пробуй
еще.
--
Удачи!
Shiliaev Ruslan