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 : , ,

08 septembre 2017

Oracle et les ordres DDL : empêcher le COMMIT implicite du DDL d'avoir lieu avec un trigger

IntroductionSous Oracle tout ordre DDL a un COMMIT implicite; c'est une règle d'or qu'on vous a enseigné dès qu'on commence à travailler avec ce SGBD. Néanmoins ce COMMIT implicite peut-être évité même après que l'ordre DDL ait réussi; nous allons tester cela avec l'exemple du CREATE TABLE. Points d'attentionN/A. Base de testsN'importe quelle base Oracle.  Exemples============================================================================================Le COMMIT implicite d'un ordre DDL : modes de... [Lire la suite]
Posté par David DBA à 13:11 - - 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 : , ,