GD PLACE
Материал из GedeminWiki
(Различия между версиями)
SYSDBA (обсуждение | вклад) |
SYSDBA (обсуждение | вклад) (→gd_place) |
||
| (не показана 1 промежуточная версия 1 участника) | |||
| Строка 1: | Строка 1: | ||
| + | Иерархический справочник административно-территориальных единиц. | ||
| + | |||
=== gd_place === | === gd_place === | ||
| Строка 12: | Строка 14: | ||
|parent | |parent | ||
|[[dforeignkey]] | |[[dforeignkey]] | ||
| − | |[[Внешняя ссылка]] на | + | |[[Внешняя ссылка]] на вышележащий уровень. Например, область входит в страну, район в область, населенный пункт в район и т.д. |
|- valign="top" | |- valign="top" | ||
|lb | |lb | ||
| Строка 28: | Строка 30: | ||
|placetype | |placetype | ||
|[[dplacetype]] | |[[dplacetype]] | ||
| − | | | + | |Тип административно-территориальной единицы. Строка. Например: Страна, Область, Район, Город и т.п. |
|- valign="top" | |- valign="top" | ||
|telprefix | |telprefix | ||
|[[dtext8]] | |[[dtext8]] | ||
| − | | | + | |Телефонный код. |
|- valign="top" | |- valign="top" | ||
|code | |code | ||
|[[dtext8]] | |[[dtext8]] | ||
| − | | | + | |Числовой код административно-территориальной единицы. |
| + | |- valign="top" | ||
| + | |editiondate | ||
| + | |[[deditiondate]] | ||
| + | |Дата и время последнего исправления. | ||
|} | |} | ||
Текущая версия на 16:27, 8 июня 2013
Иерархический справочник административно-территориальных единиц.
[править] gd_place
| Имя поля | Тип данных | Описание |
|---|---|---|
| id | dintkey | Первичный ключ. |
| parent | dforeignkey | Внешняя ссылка на вышележащий уровень. Например, область входит в страну, район в область, населенный пункт в район и т.д. |
| lb | dlb | Левая граница интервала. |
| rb | drb | Правая граница интервала. |
| name | dname | Наименование административно-территориальной единицы. |
| placetype | dplacetype | Тип административно-территориальной единицы. Строка. Например: Страна, Область, Район, Город и т.п. |
| telprefix | dtext8 | Телефонный код. |
| code | dtext8 | Числовой код административно-территориальной единицы. |
| editiondate | deditiondate | Дата и время последнего исправления. |
[править] Проверка уникальности имени
Два триггера гарантируют уникальность имени административно-территориальной единицы на одном уровне.
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 ; ^