20 juin 2018

Comment créer un trigger sur SELECT

IntroductionOracle permet de créer des triggers sur les opérations DML suivantes : INSERT, UPDATE, DELETE mais pas SELECT. Nous allons voir comment contourner cette restriction avec un audit de granularité fine créé via le package DBMS_FGA, et, lorsque l'audit se déclenchera, celui-ci appellera une procédure stockée.Un SELECT qui exécute du code PL/SQL : cela ressemble fortement à un trigger sur SELECT, non? Attention, c'est un pseudo-trigger, de niveau Statement et pas de niveau Row : si le SELECT ramène 100 lignes, la procédure... [Lire la suite]
Posté par David DBA à 10:00 - - Permalien [#]
Tags : , ,

19 mai 2018

Afficher l'ordre SQL d'une vue de façon récursive : DBMS_UTILITY.expand_sql_text

IntroductionUne vue est un objet tout simple d'Oracle, c'est juste un SELECT sur une ou plusieurs tables ou même sur d'autres vues. Mais un SELECT peut vite devenir très complexe et c'est justement pour masquer cette complexité qu'on crée des vues.Néanmoins, dans certains cas, nous voulons savoir quelle est la définition précise d'une vue, donc de façon récursive, c'est à dire afficher la définition des tables et vues sous-jacentes à cette vue et ce sur tous les niveaux. Prenons par exemple la vue V1 qui est un SELECT sur la table T1... [Lire la suite]
Posté par David DBA à 12:56 - - Permalien [#]
Tags :
23 avril 2017

Liste des colonnes mises à jour sur une table : trigger et prédicat UPDATING

IntroductionSi vous voulez obtenir la liste des colonnes mises à jour en SQL pour une table donnée, à des fins d'audit, vous faites comment? Vous essayez de récupérer les ordres SQL UPDATE et vous décomposez celui-ci pour récupérer les noms des colonnes? Attention, certains ordres seront plus difficiles à traiter que d'autres comme la gestion des sous requêtes, des hints qui ne doivent pas être pris en compte etc etc. Vous utilisez un trigger et utilisez les paramètres OLD et NEW? Vous utilisez le package DBMS_FGA?La solution que je... [Lire la suite]
Posté par David DBA à 18:28 - - Permalien [#]
Tags : , ,