Recette SQL IBM i (AS/400) · Journaux
Qui a modifié une table, et quand : lire le journal
Lire le journal en SQL pour savoir qui a ajouté, modifié ou supprimé des lignes dans une table, quand, et depuis quel programme.
Le besoin
« Qui a modifié ce client ? » Si la table est journalisée, la réponse est dans le journal : chaque ajout, modification ou suppression y laisse une entrée avec l'heure, le travail et le programme.
La requête
SELECT ENTRY_TIMESTAMP, JOURNAL_ENTRY_TYPE, OBJECT, JOB_NAME, PROGRAM_NAME, SEQUENCE_NUMBER
FROM TABLE(QSYS2.DISPLAY_JOURNAL('JOBISQL', 'QSQJRN',
STARTING_RECEIVER_NAME => '*CURAVLCHN',
JOURNAL_CODES => 'R', JOURNAL_ENTRY_TYPES => 'PT,PX,UP,DL')) J
WHERE OBJECT LIKE '%CLIENT%'
ORDER BY ENTRY_TIMESTAMP DESC
FETCH FIRST 10 ROWS ONLY
QSYS2.DISPLAY_JOURNAL lit un journal. JOURNAL_CODES => 'R' garde les opérations sur les enregistrements ; les types PT/PX sont des ajouts, UP une modification, DL une suppression. *CURAVLCHN lit toute la chaîne de récepteurs disponible.
Le résultat sur un IBM i 7.5
Ce que l'IBM i a renvoyé le 01/10/2026 (5 lignes au plus) :
| ENTRY_TIMESTAMP Horodatage de l'entrée | JOURNAL_ENTRY_TYPE Type d'écriture de journal | OBJECT Objet | JOB_NAME Nom du travail | PROGRAM_NAME Nom du programme | SEQUENCE_NUMBER Numéro de séquence |
|---|---|---|---|---|---|
| 2026-10-01 09:22:16.206592 | PT | CLIENTNEW JOBISQL CLIENTNEW | QZDASOINIT | QZDASOINIT | 157 |
| 2026-10-01 09:05:29.641328 | UP | CLIENT2 JOBISQL CLIENT2 | QZDASOINIT | QZDASOINIT | 37 |
| 2026-10-01 09:05:29.553824 | PT | CLIENT2 JOBISQL CLIENT2 | QZDASOINIT | QZDASOINIT | 32 |
| 2026-10-01 09:05:29.553824 | PT | CLIENT2 JOBISQL CLIENT2 | QZDASOINIT | QZDASOINIT | 33 |
| 2026-10-01 09:05:29.553824 | PT | CLIENT2 JOBISQL CLIENT2 | QZDASOINIT | QZDASOINIT | 34 |
Sur nos tables de démonstration, on voit les ajouts et la modification faits lors de la création du bac à sable, avec le travail serveur SQL qui les a passés.
Données anonymisées : les noms de système, de profils, de bibliothèques, de postes et les adresses IP ont été remplacés.
L'adapter à votre système
Pour voir les valeurs, la colonne ENTRY_DATA contient l'image de l'enregistrement. Limitez toujours la période avec STARTING_TIMESTAMP sur un journal de production.