GD PLACE

Материал из GedeminWiki
(Различия между версиями)
Перейти к: навигация, поиск
(qa_test)
Строка 38: Строка 38:
 
|
 
|
 
|}
 
|}
 +
 +
=== Проверка уникальности имени ===
 +
 +
Два триггера гарантируют уникальность имени административно-территориальной единицы на одном уровне.
 +
 +
<pre>
 +
 +
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 ; ^
 +
 +
</pre>
 +
 +
[[Category:База данных]]

Версия 14:37, 28 февраля 2007

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 ; ^

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

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