Инфраструктура таблицы с идентификатором
Материал из GedeminWiki
(Различия между версиями)
Evgeny (обсуждение | вклад) |
Evgeny (обсуждение | вклад) |
||
| Строка 23: | Строка 23: | ||
|} | |} | ||
| − | + | Предназначение каждого объекта раскрыто ниже на примере таблицы [[RP REPORTTEMPLATE]]:. | |
| − | + | === Триггер на вставку записи(присвоение уникального ИД) === | |
<syntaxhighlight lang="SQL"> | <syntaxhighlight lang="SQL"> | ||
| Строка 52: | Строка 52: | ||
END | END | ||
</syntaxhighlight> | </syntaxhighlight> | ||
| + | |||
| + | === Триггер на изменение записи(присвоение времени и пользователя) === | ||
| + | |||
| + | <syntaxhighlight lang="SQL"> | ||
| + | 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 | ||
| + | </syntaxhighlight> | ||
| + | |||
| + | __NOTOC__ | ||
| + | |||
| + | [[Category:Руководство разработчика]] | ||
| + | [[Category:Учебный курс]] | ||
| + | [[Category:База данных]] | ||
Версия 11:43, 17 апреля 2012
Простая таблица содержит, из системных полей, поле 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