Précédent   Forum des professionnels en informatique > Bases de données > PostgreSQL > Débuter
Débuter Forum d'entraide : Débuter en base de données avec PostgreSQL.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 18/11/2010, 17h32   #1
Invité de passage
 
Inscription : novembre 2010
Messages : 2
Détails du profil
Informations forums :
Inscription : novembre 2010
Messages : 2
Points : 0
Points : 0
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.
totoof est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/11/2010, 09h46   #2
Rédacteur/Modérateur

 
Avatar de SQLpro
 
Homme Frédéric BROUARD
Expert SGBDR & SQL
Inscription : mai 2002
Messages : 10 930
Détails du profil
Informations personnelles :
Nom : Homme Frédéric BROUARD
Localisation : France

Informations professionnelles :
Activité : Expert SGBDR & SQL
Secteur : Conseil

Informations forums :
Inscription : mai 2002
Messages : 10 930
Points : 17 724
Points : 17 724
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
Site sur les SGBD relationnels et le langage SQL: http://sqlpro.developpez.com/
Expert Microsoft SQL Server - M.V.P. (Most valuable Professional) MS Corp.
Blog SQL, SQL Server, modélisation données : http://blog.developpez.com/sqlpro
http://www.sqlspot.com : modélisation, conseils, audit, optimisation, formation
* * * * * Enseignant CNAM PACA - ISEN Toulon - CESI Aix en Provence * * * * *
SQLpro est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/11/2010, 11h16   #3
Invité de passage
 
Inscription : novembre 2010
Messages : 2
Détails du profil
Informations forums :
Inscription : novembre 2010
Messages : 2
Points : 0
Points : 0
Qu'est-ce qu'une pseudo table ?
totoof est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/11/2010, 11h55   #4
Rédacteur/Modérateur

 
Avatar de SQLpro
 
Homme Frédéric BROUARD
Expert SGBDR & SQL
Inscription : mai 2002
Messages : 10 930
Détails du profil
Informations personnelles :
Nom : Homme Frédéric BROUARD
Localisation : France

Informations professionnelles :
Activité : Expert SGBDR & SQL
Secteur : Conseil

Informations forums :
Inscription : mai 2002
Messages : 10 930
Points : 17 724
Points : 17 724
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 :
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
Site sur les SGBD relationnels et le langage SQL: http://sqlpro.developpez.com/
Expert Microsoft SQL Server - M.V.P. (Most valuable Professional) MS Corp.
Blog SQL, SQL Server, modélisation données : http://blog.developpez.com/sqlpro
http://www.sqlspot.com : modélisation, conseils, audit, optimisation, formation
* * * * * Enseignant CNAM PACA - ISEN Toulon - CESI Aix en Provence * * * * *
SQLpro est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 09h07.


 
 
 
 
Partenaires

Hébergement Web