Триггер блокировки периода (старая версия)
Материал из GedeminWiki
(Различия между версиями)
SYSDBA (обсуждение | вклад) |
SYSDBA (обсуждение | вклад) |
||
| Строка 1: | Строка 1: | ||
| − | |||
CREATE TRIGGER ac_bi_entry_block FOR ac_entry | CREATE TRIGGER ac_bi_entry_block FOR ac_entry | ||
INACTIVE | INACTIVE | ||
| Строка 41: | Строка 40: | ||
END | END | ||
END | END | ||
| + | |||
| + | |||
| + | [[Category:База данных]] | ||
Текущая версия на 16:47, 30 июля 2008
CREATE TRIGGER ac_bi_entry_block FOR ac_entry
INACTIVE
BEFORE INSERT
POSITION 28017
AS
DECLARE VARIABLE IG INTEGER;
DECLARE VARIABLE BG INTEGER;
DECLARE VARIABLE DT INTEGER;
DECLARE VARIABLE F INTEGER;
BEGIN
IF ((NEW.entrydate - CAST('17.11.1858' AS DATE)) < GEN_ID(gd_g_block, 0)) THEN
BEGIN
SELECT d.documenttypekey
FROM gd_document d
JOIN ac_record r ON r.documentkey = d.id
WHERE
r.id = NEW.recordkey
INTO
:DT;
EXECUTE PROCEDURE gd_p_exclude_block_dt (:DT)
RETURNING_VALUES :F;
IF(:F = 0) THEN
BEGIN
BG = GEN_ID(gd_g_block_group, 0);
IF (:BG = 0) THEN
BEGIN
EXCEPTION gd_e_block;
END ELSE
BEGIN
SELECT ingroup FROM gd_user WHERE ibname = CURRENT_USER
INTO :IG;
IF (BIN_AND(:BG, :IG) = 0) THEN
BEGIN
EXCEPTION gd_e_block;
END
END
END
END
END