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

Langage SQL Discussion :

Transactions et Triggers


Sujet :

Langage SQL

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Août 2006
    Messages
    18
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 18
    Points : 11
    Points
    11
    Par défaut Transactions et Triggers
    Est-il utile d'utiliser des transactions à l'intérieur des triggers ? Ou est-ce complètement inutile du fait qu'un trigger poserai un verrou automatiquement sur la table ? Autrement dit, est-ce qu'un trigger appelé plusieurs fois s'éxecute en série ?

    Exemple : SELECT NEW.champ FROM INSERTED NEW à l'intérieur d'un trigger
    dois-je le borner par une transaction ?
    Est-ce que l'éxecution de ce trigger plusieurs fois en simultanné ne risque pas de toucher à l'intégrité des données ?

  2. #2
    Membre confirmé Avatar de yjuliet
    Homme Profil pro
    Consultant en sécurité
    Inscrit en
    Août 2006
    Messages
    362
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Consultant en sécurité
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Août 2006
    Messages : 362
    Points : 460
    Points
    460
    Par défaut
    je pense que selon le SGBD, le comportement ne sera pas forcément exactement identique, mais, sans être catégorique, je pense que ton trigger fait déjà partie de ta transaction, il agit depuis un élément déjà réservé (instructions insert, update, ...) et pas encore libérés (commit ou rollback).
    Chacune de ses exécutions est effectuée dans le contexte de la transaction qui l'a déclenché, à priori. Reste ensuite à déterminer sur quelles données va agir ton trigger.
    Je ne sais plus, par contre, si les instructions concernant les lock sont disponibles au sein des triggers sur tous les SGBDR ...

  3. #3
    Xo
    Xo est déconnecté
    Expert confirmé
    Avatar de Xo
    Inscrit en
    Janvier 2005
    Messages
    2 701
    Détails du profil
    Informations personnelles :
    Âge : 51

    Informations forums :
    Inscription : Janvier 2005
    Messages : 2 701
    Points : 4 238
    Points
    4 238
    Par défaut
    Un trigger n'est pas un élément du langage SQ, le mieux serait que tu nous précises le SGBD sur lequel tu travailles, et que le sujet soit déplacé : tu obtiendrais des renseignements plus "précis".

    Un trigger peut gérer des transaction, insérer ou mettre à jour des lignes dans une autre table (ex : consolidation de données, table de log ou d'events, etc.), mais il ne peut pas, par exemple, insérer ou modifier des enregistrement de cette même table, le SGBD ne te permettras pas de le compiler.

  4. #4
    Membre éprouvé Avatar de Yurck
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2005
    Messages
    682
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 15
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2005
    Messages : 682
    Points : 912
    Points
    912
    Par défaut
    Citation Envoyé par Xo
    mais il ne peut pas, par exemple, insérer ou modifier des enregistrement de cette même table, le SGBD ne te permettras pas de le compiler.
    Comme tu le dis cela dépend des SGBD et souvent ils le permettent.
    C'est par exemple ce qui permettra sur un trigger que recalculer une clé si on veut éviter les trous au cours d'une suppresion de ligne.
    C'est vrai qu'Oracle par exemple a longtemps été handicapé par cette restriction mais au risque de me y tromper je crois que ce n'est plus le cas aujourd'hui.
    Enfin il est clair que la réponse à la question initiale dépend grandement du SGBD en cause.
    a+

Discussions similaires

  1. Transaction et trigger
    Par bsangoku dans le forum Langage SQL
    Réponses: 3
    Dernier message: 30/03/2011, 18h48
  2. Trigger dans une transaction? Possible?
    Par SuperCed dans le forum SQL Procédural
    Réponses: 0
    Dernier message: 24/08/2007, 17h45
  3. Transactions distribuées et triggers
    Par mikedavem dans le forum MS SQL Server
    Réponses: 4
    Dernier message: 15/04/2007, 20h00
  4. [PL/SQL] Creation de triggers dans transaction
    Par globeriding dans le forum Oracle
    Réponses: 15
    Dernier message: 07/02/2006, 11h33
  5. petite aide sur les transactions et triggers SVP
    Par CharleLéo dans le forum Débuter
    Réponses: 4
    Dernier message: 15/11/2004, 20h43

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