IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

 PostgreSQL Discussion :

Analyse d'une transaction


Sujet :

PostgreSQL

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Nouveau candidat au Club
    Profil pro
    Inscrit en
    Novembre 2010
    Messages
    2
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2010
    Messages : 2
    Par défaut Analyse d'une transaction
    Bonsoir,

    Je suis en train de me poser une question et je ne trouve pas la réponse. Pourriez-vous m'aider ?
    Voici ma question : Je voudrais savoir si il est possible de créer une "fonction" qui me permettrait de connaitre la liste des lignes qui ont été modifiées au cours d'une transaction.

  2. #2
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    22 010
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Expert bases de données / SQL / MS SQL Server / Postgresql
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2002
    Messages : 22 010
    Billets dans le blog
    6
    Par défaut
    Vous pouvez poser des déclencheurs et utiliser les pseudos tables pour ce faire.

    A noter, MS SQL Server possède une clause OUTPUT dans toutes les requêtes de mise à jour pour ce faire...

    A +
    Frédéric Brouard - SQLpro - ARCHITECTE DE DONNÉES - expert SGBDR et langage SQL
    Le site sur les SGBD relationnels et le langage SQL: http://sqlpro.developpez.com/
    Blog SQL, SQL Server, SGBDR : http://blog.developpez.com/sqlpro
    Expert Microsoft SQL Server - M.V.P. (Most valuable Professional) MS Corp.
    Entreprise SQL SPOT : modélisation, conseils, audit, optimisation, formation...
    * * * * * Expertise SQL Server : http://mssqlserver.fr/ * * * * *

  3. #3
    Nouveau candidat au Club
    Profil pro
    Inscrit en
    Novembre 2010
    Messages
    2
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2010
    Messages : 2
    Par défaut
    Qu'est-ce qu'une pseudo table ?

  4. #4
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    22 010
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Expert bases de données / SQL / MS SQL Server / Postgresql
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2002
    Messages : 22 010
    Billets dans le blog
    6
    Par défaut
    Il faudrait peut être envisagé de commencer par vous former au langage SQL ?

    Mon livre comme mon site web peuvent vous y aider....

    Extrait de mon livre :

    Déclencheurs

    Un déclencheur (ou trigger) est un objet de la base, relatif à une table, contenant du code SQL exécuté automatiquement en fonction d’un ordre de mise à jour SQL associé. La norme SQL:1999 ne considère que les triggers portant sur les tables et se déclenchant avant ou après l’un des ordres SQL suivants : INSERT, UPDATE ou DELETE. Aucun trigger n’est déclenché directement par l’ordre MERGE.

    Les déclencheurs sont intéressants dans les cas suivants :
    • amélioration d’un modèle de données complexe (héritage, limitation de cardinalité…) ;
    • standardisation et normalisation de données (vérification de clés lors de la saisie d’un numéro de compte bancaire) ;
    • audit et traçabilité de l’évolution des données (suivi de toutes les modifications d’une table avec récupération de l’identité de l’utilisateur SQL et de l’heure de survenue de l’événement) ;
    • archivage (déport des lignes comptables du mois passé dans une table d’une base annexe) ;
    • implémentation de règles métier particulières (limitation de la remise commerciale en fonction du CA annuel du client).


    6.1 - SYNTAXE

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    CREATE TRIGGER <nom_trigger>
       { BEFORE | AFTER }
       { INSERT | UPDATE [ OF <liste_colonne> ] | DELETE }
    ON <nom_table> [ REFERENCING <liste_alias_valeurs_anciennes_nouvelles> ]
    [ FOR EACH { ROW | STATEMENT } ]
    [ WHEN ( <prédicat> ) ]
    BEGIN ATOMIC
    <code_SQL>
    END
    <liste_alias_valeurs_anciennes_nouvelles> ::=
       OLD [ ROW ] [ AS ] <nom_correlation_valeurs_anciennes>
       NEW [ ROW ] [ AS ] <nom_correlation_valeurs_nouvelles>
       OLD TABLE [ AS ] <alias_table_valeurs_anciennes>
       NEW TABLE [ AS ] <alias_table_valeurs_nouvelles>
    Attention
    Le déclenchement d’un trigger ne concerne pas qu’une seule ligne. Sauf indication explicitement contraire, un trigger ne se déclenche qu’une fois, même si l’ordre SQL qui l’a lancé concerne des milliers de lignes.

    Il existe deux types de triggers : ceux qui sont destinés à agir globalement sur la table et doivent traiter les données de manière ensembliste (FOR EACH STATEMENT) et ceux qui sont déclenchés pour chacune des lignes concernées par l’ordre SQL (FOR EACH ROW). Par défaut, un trigger est déclenché de manière globale (FOR EACH STATEMENT). Dans le cas de l’UPDATE, le trigger peut être déclenché pour certaines colonnes mises à jour (UPDATE OF <liste_colonne>). Dans ce cas, la mise à jour d’une colonne qui n’est pas dans la liste <liste_colonne> ne déclenche pas le trigger. La clause WHEN, qui contient un prédicat, permet d’éviter de déclencher le trigger si certaines conditions ne sont pas remplies.
    Les alias de tables et les noms de corrélation (voir syntaxe) permettent d’accéder aux valeurs anciennes affectées par l’ordre SQL qui a déclenché le trigger, et aux nouvelles valeurs (après l’exécution de cet ordre). Cependant, INSERT ne peut référencer OLD ROW et OLD TABLE, et DELETE ne peut référencer NEW ROW et NEW TABLE.
    S’il s’agit d’alias de tables, ils peuvent être considérés comme des pseudo-tables de structure identique à la table concernée par le trigger. Bien entendu, vous devez utiliser un alias de table si le trigger est déclenché globalement et un nom de corrélation de ligne si le trigger est déclenché pour chaque ligne (FOR EACH ROW).


    A +
    Frédéric Brouard - SQLpro - ARCHITECTE DE DONNÉES - expert SGBDR et langage SQL
    Le site sur les SGBD relationnels et le langage SQL: http://sqlpro.developpez.com/
    Blog SQL, SQL Server, SGBDR : http://blog.developpez.com/sqlpro
    Expert Microsoft SQL Server - M.V.P. (Most valuable Professional) MS Corp.
    Entreprise SQL SPOT : modélisation, conseils, audit, optimisation, formation...
    * * * * * Expertise SQL Server : http://mssqlserver.fr/ * * * * *

Discussions similaires

  1. Fonctionnement simplifié d'une transaction Oracle
    Par jack554 dans le forum Oracle
    Réponses: 7
    Dernier message: 21/04/2005, 10h25
  2. comment identifier une transaction http?
    Par didier.cabale dans le forum Développement
    Réponses: 5
    Dernier message: 13/04/2005, 16h42
  3. [SGBD]Evaluation du temps d'une transaction
    Par vsavoir dans le forum Décisions SGBD
    Réponses: 4
    Dernier message: 26/10/2004, 17h53
  4. Utilisation d'une transaction
    Par Bernard M dans le forum Bases de données
    Réponses: 6
    Dernier message: 21/04/2004, 23h31
  5. [Debutant(e)] Analyse d'une chaîne de caractères
    Par maire106 dans le forum Langage
    Réponses: 6
    Dernier message: 22/03/2004, 15h04

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo