, Tables avec informations de création et modification

Comment gérer simplement les informations de modifications sur les enregistrements
utilisateur + date de création ou de modification

Vous connaissez la méthode applicative par sql ou update

Vous connaissez la méthode par trigger after, vous modifiez les zones dans le buffer après avec les informations en cours.

Voici un solution ou vous n’avez rien à faire, vous laissez faire SQL

Soit la table suivante des applications :

CREATE TABLE APPLICATION1 FOR SYSTEM NAME APPLICAT1 (
DESCRIPTION_APPLICATION FOR COLUMN DES_APP CHAR(50) NOT NULL WITH DEFAULT,
APPLICATION_CODE FOR COLUMN APP_COD CHAR(8) NOT NULL WITH DEFAULT,

/* Informations de mise à jour */
APPAUSRCHG VARCHAR(18) GENERATED ALWAYS AS (USER),
APPATMPCHG TIMESTAMP FOR EACH ROW ON UPDATE AS ROW CHANGE TIMESTAMP NOT NULL,
APPAUSRCRT CHAR(18) NOT NULL DEFAULT USER IMPLICITLY HIDDEN,
APPATMPCRT TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP IMPLICITLY HIDDEN
)
Explications :

GENERATED ALWAYS AS (USER), indique que la zone est systématiquement forcée avec l’utilisateur en cours
FOR EACH ROW ON UPDATE AS ROW CHANGE TIMESTAMP indique qu’a chaque modification, vous aurez la date en cours
DEFAULT USER indique valeur par défaut utilisateur en cours
DEFAULT CURRENT_TIMESTAMP indique valeur par défaut date en cours
HIDDEN indique que la zone n’apparaitra pas dans un select *

Exemple d’insertion

INSERT INTO GDATA.APPLICATION1 (
DESCRIPTION_APPLICATION,APPLICATION_CODE ) VALUES ( ‘TEST’, ‘TEST’ )

Exemple de mise à jour

UPDATE GDATA.APPLICATION1
SET
DESCRIPTION_APPLICATION = ‘TEST2’,
APPLICATION_CODE = ‘test2’
WHERE DESCRIPTION_APPLICATION = ‘TEST’

Visualisation du résultat

Sauf zones cachées


SELECT * ROM GDATA.APPLICATION1

Avec les zones cachés

SELECT DESCRIPTION_APPLICATION, APPLICATION_CODE, APPAUSRCHG,
APPATMPCHG, APPAUSRCRT, APPATMPCRT FROM GDATA.APPLICATION1

Remarques :
Les zones user devront être sur 18 en varchar
Vous devez utiliser le format explicite pour la création
Voila , Simple et efficace
Merci à Patrick pour son exemple de code