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 :

probléme avec les transaction


Sujet :

MS SQL Server

  1. #1
    Débutant Avatar de amazircool
    Inscrit en
    Décembre 2005
    Messages
    497
    Détails du profil
    Informations forums :
    Inscription : Décembre 2005
    Messages : 497
    Points : 152
    Points
    152
    Par défaut probléme avec les transaction
    salut :=)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    BEGIN TRANSACTION AjouEleve --On démarre une transaction et on lui donne un nom
     
    DECLARE @error INT --On déclare une variable qui sera destiné à accueillir nos erreurs
    DECLARE @ID_INSERTION NUMERIC(19,0) -- On déclare une variable numérique destinée à contenir l'id inséré
     
    SET @error = 0 --initialisation de la variable erreur :=)
     
    UPDATE eleve SET nom='make' WHERE IDauditeur=1
    SET @error = @error + @@error
     
    UPDATE eleve SET nom='jake' WHERE IDauditeur=2
    SET @error = @error + @@error   --On additionne l'erreur liée à la dernière requête SQL dans notre variable
     
     
    UPDATE eleve SET nom='david' WHERE IDauditeur=3
    SET @error = @error + @@error  --On additionne l'erreur liée à la dernière requête SQL dans notre variable
     
    INSERT INTO eleve VALUES(4,'danil','loup',30,'morad@gmail.fr')
    SET @error = @error + @@ERROR --On additionne l'erreur liée à la dernière requête SQL dans notre variable
     
    INSERT INTO eleve VALUES(4,'coulded','cloud',30,'samad@gmail.fr')
    SET @ID_INSERTION = @@identity --On récupère la valeur du dernier id inséré et on le stocke dans notre variable
    print   'Statut de lerreur : ' + CAST(@ID_INSERTION AS VARCHAR(10))
     
    PRINT 'Statut de lerreur : ' + CAST(@error AS VARCHAR(10)) --On affiche le statut de l'erreur casté sous forme de caractère
     
    IF @error = 0 --Si errors est égale à 0, donc s'il n'y a eu aucune erreur
    	COMMIT TRANSACTION AjouEleve-- On commit la transaction
    ELSE --S'il y a eu des erreurs
    	ROLLBACK TRANSACTION AjouEleve--On annule tous les changements de cette transaction
    Svp je n’arrive pas a exécuter la transaction suivant, qd je provoque une erreur a la fin de transaction (insertion d’une clé déjà existe les requêtes précédente y’a pas un ROLLBACK au niveau de ces requêtes)

  2. #2
    Membre expérimenté

    Profil pro
    Inscrit en
    Août 2002
    Messages
    1 249
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2002
    Messages : 1 249
    Points : 1 745
    Points
    1 745
    Par défaut correction
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    INSERT INTO eleve VALUES(4,'danil','loup',30,'morad@gmail.fr')
    SET @error = @error + @@ERROR --On additionne l'erreur liée à la dernière requête SQL dans notre variable
     
    INSERT INTO eleve VALUES(4,'coulded','cloud',30,'samad@gmail.fr')
    SET @error = @error + @@ERROR --On additionne l'erreur liée à la 
    SET @ID_INSERTION = @@identity
    comme cela, le rollback aura lieu en principe.

  3. #3
    Débutant Avatar de amazircool
    Inscrit en
    Décembre 2005
    Messages
    497
    Détails du profil
    Informations forums :
    Inscription : Décembre 2005
    Messages : 497
    Points : 152
    Points
    152
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    BEGIN TRANSACTION AjouEleve --On démarre une transaction et on lui donne un nom
     
    DECLARE @error INT --On déclare une variable qui sera destiné à accueillir nos erreurs
    DECLARE @ID_INSERTION NUMERIC(19,0) -- On déclare une variable numérique destinée à contenir l'id inséré
     
    SET @error = 0 --initialisation de la variable erreur :=)
     
    UPDATE eleve SET nom='make' WHERE IDauditeur=1
    SET @error = @error + @@error
     
    UPDATE eleve SET nom='jake' WHERE IDauditeur=2
    SET @error = @error + @@error   --On additionne l'erreur liée à la dernière requête SQL dans notre variable
     
     
    UPDATE eleve SET nom='david' WHERE IDauditeur=3
    SET @error = @error + @@error  --On additionne l'erreur liée à la dernière requête SQL dans notre variable
     
    INSERT INTO eleve VALUES(4,'mayke','loup',30,'morad@gmail.fr')
    SET @error = @error + @@ERROR --On additionne l'erreur liée à la dernière requête SQL dans notre variable
     
     
     
    INSERT INTO eleve VALUES(5,'danil','loup',30,'morad@gmail.fr')
    SET @error = @error + @@ERROR --On additionne l'erreur liée à la dernière requête SQL dans notre variable
     
    INSERT INTO eleve VALUES(5,'coulded','cloud',30,'samad@gmail.fr')
    SET @error = @error + @@ERROR --On additionne l'erreur liée à la 
    SET @ID_INSERTION = @@identity

    NB: je travail sur sql serveur 2000
    Résultat de la transaction



    (0 ligne(s) affectée(s))


    (0 ligne(s) affectée(s))


    (0 ligne(s) affectée(s))


    (1 ligne(s) affectée(s))


    (1 ligne(s) affectée(s))

    Serveur : Msg 2627, Niveau 14, État 1, Ligne 1
    Violation de la contrainte PRIMARY KEY 'PK__auditeur__76CBA758'. Impossible d'insérer une clé en double dans l'objet 'auditeur'.
    L'instruction a été arrêtée.

    Statut de lerreur : 2627

  4. #4
    Membre expérimenté

    Profil pro
    Inscrit en
    Août 2002
    Messages
    1 249
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2002
    Messages : 1 249
    Points : 1 745
    Points
    1 745

Discussions similaires

  1. Problème avec les transactions
    Par mina24 dans le forum Bases de données
    Réponses: 6
    Dernier message: 20/03/2012, 10h01
  2. problème avec Les transactions
    Par mina24 dans le forum Connexion aux bases de données
    Réponses: 1
    Dernier message: 27/02/2012, 08h55
  3. Problème avec les transactions imbriquées
    Par StringBuilder dans le forum Développement
    Réponses: 17
    Dernier message: 22/02/2012, 15h52
  4. SQL Server 2005: Problème avec les transaction logs
    Par n8ken dans le forum MS SQL Server
    Réponses: 5
    Dernier message: 14/03/2008, 15h42
  5. problème avec les transactions
    Par Invité dans le forum PostgreSQL
    Réponses: 3
    Dernier message: 20/07/2005, 11h43

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