Реферат: Иерархические структуры данных в реляционных БД

ACTIVE BEFORE INSERT POSITION 0

AS

declare variable parent_level integer;

BEGIN

if (NEW."ID" is null) then NEW."ID" =GEN_ID(CATALOG_GEN,1);

/*Корневыеэлементыимеютуровень 1*/

if ((NEW."PARENT_ID" is NULL) and (NEW."LEVEL" <> 1)) then

exception WRONG_LEVEL;

/*Значение поля Level для некорневых элементов должно быть на 1 больше, чем у их родителя*/

if (NEW."PARENT_ID" is NOT NULL) THEN

begin

select "LEVEL" from "CATALOG" WHERE "ID" = NEW."PARENT_ID" into :parent_level;

if (NEW."LEVEL" <> :parent_level+1) then

exception WRONG_LEVEL;

end

END ^

/*

Триггер перед обновлением - контролирует правильность поля Level

*/

CREATE TRIGGER "CATALOG_BEFORE_UPD" FOR "CATALOG"

ACTIVE BEFORE UPDATE POSITION 0

AS

declare variable parent_level integer;

declare variable child_id integer;

BEGIN

if ((NEW."PARENT_ID" is NULL) and (NEW."LEVEL" <> 1)) then

exception WRONG_LEVEL;

select "LEVEL" from "CATALOG" WHERE "ID" = NEW."PARENT_ID" into :parent_level;

if (NEW."LEVEL" <> :parent_level+1) then

К-во Просмотров: 221
Бесплатно скачать Реферат: Иерархические структуры данных в реляционных БД