Последнее обновление временной метки записи физического файла AS400 - PullRequest
0 голосов
/ 30 мая 2018

Я пытаюсь добавить последнюю обновленную метку времени к старому физическому файлу на AS400.Этот физический файл записан в DDS.Я добавил в поле отметки времени, но не могу заставить его автоматически обновляться до текущей отметки времени при изменении записи.

Я попытался создать программу триггера RPGLE, которая устанавливает отметку времени поля в изображении после.триггерного буфера.Однако это изменение не отражено в реальном файле, так как я считаю, что триггерный буфер является ссылкой только для ввода.

Есть ли у кого-нибудь идеи о том, как я могу получить метку времени для каждой записи, которая автоматически обновляется при внесении изменений в эту запись?

Спасибо!

РЕДАКТИРОВАТЬ:Я разместил код, который должен обрабатывать обновление метки времени в программе запуска.Не правильно ли установлен буфер запуска?

 d PGMNAME         pr
 d  TrgBuffer_                         like(TrgBuffer)
 d  TrgBufLen_                         like(TrgBufLen)

 d BefImg        e ds                  extname(FILENAME) prefix(b_)
 d AftImg        e ds                  extname(FILENAME) prefix(a_)

 d FILENAMER       pi
 d  p$TrgBuffer                        like(TrgBuffer)
 d  p$TrgBufLen                        like(TrgBufLen)

    TrgBuffer = p$TrgBuffer;
    TrgBufLen = p$TrgBufLen;

    NRO = NewRecOff + 1;
    NRL = NewRecLen;
    ORO = OrgRecOff + 1;
    ORL = OrgRecLen;

    // Set Before / After Images
    BefImg = %subst(TrgBuffer:ORO:ORL);
    AftImg = %subst(TrgBuffer:NRO:NRL);

    select;

    // Update
     when TrgEvent = '3';

     // Set last updated timestamp on record.
     a_lstupd = %timestamp();
     %subst(TrgBuffer:NRO:NRL) = AftImg;
     p$TrgBuffer = TrgBuffer;      

1 Ответ

0 голосов
/ 31 мая 2018

Вам не нужно придерживаться DDS.

Вы можете использовать iNav или более новую схему ACS Schema для генерации SQL DDL для PF, изначально определенного с помощью DDS.

Тогда этопросто добавить

LAST_UPDATED for column LSTUPD
  timestamp not null
  generated always 
  for each row on update 
  as row change timestamp

В этом отношении вы можете использовать оператор SQL ALTER TABLE, чтобы добавить столбец к существующей PF.

Существует очень небольшая разница между DDS PF и таблицей SQL на уровне объектов ОС.И какие существуют различия, внутренние, а не внешние для всего, что его использует.

...