2017-10-13 22 views
0

Y a-t-il une requête sql dans DB2 qui va chercher la table/les enregistrements où un enregistrement a été mis à jour depuis un horodatage donné?DB2 - Récupérer les tables qui ont un enregistrement inséré/mis à jour/effacé d'un horodatage donné

La requête suivante que j'ai utilisée seulement récupérée s'il s'agit d'un changement de table et non si les enregistrements sont mis à jour.

SELECT TRIM(TABSCHEMA) || '.' || TRIM(TABNAME), 
     MAX(CREATE_TIME,ALTER_TIME) 
FROM SYSCAT.TABLES 
ORDER BY 2 DESC 
+0

Quelle plateforme de Db2? (Z/os, i-series, Unix/Windows). Si la table concernée a un horodatage de modification de ligne ou une colonne d'horodatage gérée automatiquement, vous pouvez utiliser cette colonne dans une requête. En fonction de la plate-forme de Db2 et de la version et des outils disponibles et configurés, vous pouvez également utiliser les fonctionnalités d'audit ou l'analyse du journal des transactions pour rechercher ces informations. – mao

+0

@mao J'ai besoin de trouver la table où une colonne d'un enregistrement est mise à jour/insérée. Il ne s'agit pas d'une table spécifique, mais de la base de données DB entière – 2FaceMan

+0

Ensuite, modifiez la question pour afficher votre plate-forme/version et votre jeu d'outils, car cela déterminera la réponse. – mao

Répondre

0

La solution générique serait d'ajouter une colonne de suivi d'horodatage à chaque table, par défaut current timestamp puis sélectionnez toutes les valeurs MAX() avec une union et le filtre avec un paramètre d'horodatage.

L'autre solution consiste à créer un trigger qui met à jour une table de suivi avec le nom de la table et l'horodatage actuel.