Karabas Barabas wrote:
>  D>     Ай, а default-поле в таблице - уже прошлый век ;) 

> Какое default-поле ?

Create Table T(
...
DateReg   TimeStamp Default 'now',
UserReg   Char (6) Default Current_User, /*Фантазии не поощряю, 6 */
DateIzm   TimeStamp,
UserIzm   Char (6),
Triggers_Off Char(1) Default 'Н'
)

Если after-триггера не нужны (а я их избегаю), то

Create Trigger T_BI For T Before Insert As
Begin
  if ((New.Triggers_Off is NULL) OR (New.Triggers_Off <> 'Д')) then
   begin
     Trigger body;
   end
  New.Triggers_Off='Н'
End

Create Trigger T_BU For T Before Update As
Begin
   if ((New.Triggers_Off is NULL) OR
       ((New.Triggers_Off = Old.Triggers_Off) And
        (New.Triggers_Off <> 'Д'))) then
    begin New.UserIzm=USER; New.DateIzm='NOW;
      Trigger body;
    End
   New.Triggers_Off='Н';
End


Такой вот технологический стандарт структуры таблиц.

> У меня почему-то появилась мысль добавить в логируемые таблицы поле с ее 
> именем, тогда в триггере будет доступно имя текущей таблицы. Или это не 
> кошерно ?

Ну, если увеличить размер записи на 31 символ (а нынче уже и поболе) и 
держать одно и то же в миллионе записей не в падлу, а написать за часок 
генератор триггеров по шаблону в падлу, то оно конешно. Проблема со 
статическими логирующими триггерами не в том, как их сделать не 
утруждаясь особо, а в том, как всё это добро поддерживать не путаясь при 
изменении метаданных.

-- 
Regards. Ded.

Ответить