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

MS SQL Server Discussion :

Trigger et transactions


Sujet :

MS SQL Server

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Octobre 2008
    Messages
    699
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Boutique - Magasin

    Informations forums :
    Inscription : Octobre 2008
    Messages : 699
    Par défaut Trigger et transactions
    Bonjour,

    J'ai un problème étrange.

    J'ai des tables de mouvements de stock et des tables de cumul.
    Un cumul hebdomadaire, et un cumule absolu.
    Ces deux tables sont remplies via des triggers dans les tables de mouvements.

    Le problème est que sur je fais un sum sur les mouvements, je devrais retomber sur mes cumuls.
    Mais dans ~10% des cas ça n'est pas les cas.

    Et ce matin je fais un petit contrôle et je me rends compte que ma requête de résultat me montrer beaucoup des erreurs et lorsque je la relance j'en ai moins.
    Et le nombre varie à chaque lancement de la requête.

    Quelqu'un peut confirmer que les trigger et les éventuelles procédures stockées qu'il appelle, tournent dans la même transaction ?

    Je regarder dans mon mes programme si j'ai des désactive trigger qui trainent, mais il n'y en a pas.

    Donc si qqun a une autre piste de recherche, je prends.

    A+

  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 002
    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 002
    Billets dans le blog
    6
    Par défaut
    Citation Envoyé par Donpi Voir le message
    Quelqu'un peut confirmer que les trigger et les éventuelles procédures stockées qu'il appelle, tournent dans la même transaction ?
    Oui et ça dépend.

    Le déclencheur est toujours à l'intérieur d'une transaction qu'elle soit explicite ou implicite (un simple insert par exemple).
    Mais dans les déclencheur on peut finaliser la transaction par un COMMIT ou un ROLLBACK.
    Dans une procédure, comme dans un déclencheur on peut initier une transaction. S'il en existe déjà une (cas du trigger par défaut) cela induit des transaction imbriquées. Mais au final, il n'existe pas de transaction à l'intérieur d'une transaction, car la transaction est finalement un état de la session :
    • je suis en état de transaction
    • ou je n'y suis pas.

    Problème : la plupart des développeurs maitrisent mal le sujet et font n'importe quoi....

    Postez l'intégralité de votre code : trigger + toutes les procédures avant et après. Nous pourrons vous aider !

    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
    Membre éclairé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Octobre 2008
    Messages
    699
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Boutique - Magasin

    Informations forums :
    Inscription : Octobre 2008
    Messages : 699
    Par défaut
    Citation Envoyé par SQLpro Voir le message
    Postez l'intégralité de votre code : trigger + toutes les procédures avant et après. Nous pourrons vous aider !
    C'est un vrais sac de nœuds !
    Il y a 5 tables avec 3 Triggers qui font des appelles conditionnels à une dizaine de procédure stockées chacune fait dans les 200 lignes et foisonnent de curseurs.
    Plus tout ce que je n'ai pas encore identifié.

    Au delà du secret professionnel c'est une telle masse que je peux difficilement la partager ici.

    Je vais rechercher si j'ai des commit ou des rollback et essayer de vous poster un schéma des appels.

    Merci

  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 002
    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 002
    Billets dans le blog
    6
    Par défaut
    Citation Envoyé par Donpi Voir le message
    J'ai des tables de mouvements de stock et des tables de cumul.
    Un cumul hebdomadaire, et un cumule absolu.
    Ces deux tables sont remplies via des triggers dans les tables de mouvements.
    Entre nous ceci est parfaitement stupide !
    En effet pourquoi faire très mal (à coup de délencheur) ce qui se fait de manière simple et performantes par des requêtes basiques de lecture ???
    Les développeurs sont-ils masochistes ?

    Remplacez ces tables par des vues. Au pire par des vues indexées. Supprimez les triggers...

    A mon avis les déclencheurs sont mal écrits. Pourriez vous poster le code intégrale des triggers ???

    PS : ce sont vos données qui sont confidentielles, pas le code !!!

    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. Syntaxe Trigger Mysql / Transact SQL de SQL Server
    Par Flashball dans le forum SQL Procédural
    Réponses: 8
    Dernier message: 13/03/2008, 15h23
  2. Transactions et Triggers
    Par sonik1st dans le forum Langage SQL
    Réponses: 3
    Dernier message: 30/08/2006, 17h03
  3. [PL/SQL] Creation de triggers dans transaction
    Par globeriding dans le forum Oracle
    Réponses: 15
    Dernier message: 07/02/2006, 11h33
  4. 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