Инфраструктура таблицы с идентификатором

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

Простая таблица содержит, из системных полей, поле id для хранения уникального идентификатора записи, поле editiondate для хранения даты изменения и добавления записи, поле editorkey для хранения id пользователя, который модифицировал запись. Поля заполняются триггерами, имена которых формируются по определенной схеме. В таблице ниже приведены примеры имен для таблицы из эталонной базы данных и для пользовательской таблицы.

N Описание объекта Таблица RP_REPORTTEMPLATE Таблица USR$FA_TYPE
1 Триггер для присвоения уникального идентификатора RP_BI_REPORTTEMPLATE USR$BI_USR$FA_TYPE
2 Триггер для присвоения времени и пользователя при вставке новой записи. RP_BI_REPORTTEMPLATE5 USR$BI_FA_TYPE5
3 Триггер для присвоения времени и пользователя при изменении записи. RP_BU_REPORTTEMPLATE5 USR$BU_FA_TYPE5

Предназначение каждого объекта раскрыто ниже на примере таблицы RP REPORTTEMPLATE:.

Триггер на вставку записи(присвоение уникального ИД)

CREATE OR ALTER TRIGGER RP_BI_REPORTTEMPLATE FOR RP_REPORTTEMPLATE
  ACTIVE 
  BEFORE INSERT 
  POSITION 0
AS
BEGIN
  IF (NEW.id IS NULL) THEN
    NEW.id = GEN_ID(gd_g_offset, 0) + GEN_ID(gd_g_unique, 1);
END

Триггер на вставку записи(присвоение времени и пользователя)

CREATE OR ALTER TRIGGER RP_BI_REPORTTEMPLATE5 FOR RP_REPORTTEMPLATE
ACTIVE BEFORE INSERT POSITION 5
AS
BEGIN
  IF (NEW.editorkey IS NULL) THEN
    NEW.editorkey = 650002;
 IF (NEW.editiondate IS NULL) THEN
    NEW.editiondate = CURRENT_TIMESTAMP;
END

Триггер на изменение записи(присвоение времени и пользователя)

CREATE OR ALTER TRIGGER RP_BU_REPORTTEMPLATE5 FOR RP_REPORTTEMPLATE
ACTIVE BEFORE UPDATE POSITION 5
AS
BEGIN
  IF (NEW.editorkey IS NULL) THEN
    NEW.editorkey = 650002;
  IF (NEW.editiondate IS NULL) THEN
    NEW.editiondate = CURRENT_TIMESTAMP;
END
Персональные инструменты
Пространства имён

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