Инфраструктура таблицы с идентификатором
Материал из GedeminWiki
(Различия между версиями)
Evgeny (обсуждение | вклад) |
Evgeny (обсуждение | вклад) |
||
| Строка 22: | Строка 22: | ||
| USR$BU_FA_TYPE5 | | USR$BU_FA_TYPE5 | ||
|} | |} | ||
| + | |||
| + | === Триггер на вставку записи(присвоение уникального ИД) === | ||
| + | |||
| + | Текст триггера на примере таблицы [[RP REPORTTEMPLATE]]: | ||
| + | |||
| + | <syntaxhighlight lang="SQL"> | ||
| + | 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 | ||
| + | </syntaxhighlight> | ||
| + | |||
| + | === Триггер на вставку записи(присвоение времени и пользователя) === | ||
| + | |||
| + | <syntaxhighlight lang="SQL"> | ||
| + | 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 | ||
| + | </syntaxhighlight> | ||
Версия 11:41, 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