GD PLACE

Материал из GedeminWiki
Перейти к: навигация, поиск

gd_place

Имя поля Тип данных Описание
id dintkey Первичный ключ.
parent dforeignkey Внешняя ссылка на родителя.
lb dlb Левая граница интервала.
rb drb Правая граница интервала.
name dname Наименование административно-территориальной единицы.
placetype dplacetype РУИД настройки, от которой зависит данный тест. Если такая настройка на базе не установлена, то тест выполняться не будет.
telprefix dtext8 Внешняя ссылка на скрипт-функцию теста.
code dtext8

Проверка уникальности имени

Два триггера гарантируют уникальность имени административно-территориальной единицы на одном уровне.


CREATE EXCEPTION gd_e_placeexists 'Place already exists';

SET TERM ^ ;

CREATE TRIGGER gd_bi_place FOR gd_place
  BEFORE INSERT
  POSITION 0
AS
BEGIN
  IF (NEW.ID IS NULL) THEN
    NEW.ID = GEN_ID(gd_g_unique, 1) + GEN_ID(gd_g_offset, 0);

  IF (EXISTS(SELECT * FROM gd_place WHERE COALESCE(parent, 0) = COALESCE(NEW.parent, 0)
    AND UPPER(name) = UPPER(NEW.name))) THEN
  BEGIN
    EXCEPTION gd_e_placeexists;
  END
END
^

CREATE TRIGGER gd_bu_place FOR gd_place
  BEFORE UPDATE
  POSITION 0
AS
BEGIN
  IF (EXISTS(SELECT * FROM gd_place WHERE COALESCE(parent, 0) = COALESCE(NEW.parent, 0)
    AND UPPER(name) = UPPER(NEW.name)
    AND ID <> NEW.id)) THEN
  BEGIN
    EXCEPTION gd_e_placeexists;
  END
END
^

SET TERM ; ^

Персональные инструменты
Пространства имён

Варианты
Действия
Навигация
Инструменты