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 :

[SQL SERVER 2000] pbm de transaction


Sujet :

MS SQL Server

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2003
    Messages : 5
    Points : 5
    Points
    5
    Par défaut [SQL SERVER 2000] pbm de transaction
    Bonjour, je suis entrain de tester les transactions dans mon application
    et je gére cela du coté du server.
    J'ai une procedure stockée qui va me permettre d'inserer des tuples dans une table avec gestion des transactions
    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
     
    CREATE PROCEDURE sp_test_transaction
    AS
     
    BEGIN TRANSACTION
     
    INSERT INTO DEGRE_URGENCE(du_id,du_libelle) VALUES(1,'kjmlkl')
     
     
    INSERT INTO DEGRE_URGENCE(du_id,du_libelle) VALUES(2,'kjmlkl')
    INSERT INTO DEGRE_URGENCE(du_id,du_libelle) VALUES(6,'kjmlkl')
     
      IF @@ERROR <> 0
           BEGIN
               RAISERROR('error occured while recording purchase', 16, 1)
               ROLLBACK
    	SELECT 0
           END
     ELSE
    	BEGIN
    		SELECT 1
    	END
     
    COMMIT TRANSACTION
    GO
    ma table DEGRE_URGENCE contient actuellement deux enregistrements qui ont l' ID 1 et 2. Donc ma procédure stockée ne devrait pas inserer l'enregistrement avec l'ID 6 puisqu'il ya une erreur de conflit de clé avec les enregistrements d'ID 1 et 2. Mais l'enregistrement avec l'ID 6 est insérer tout de meme et je ne le souhaite po vu qu'il ya eu des problemes auparavant. Comment effectuer cela merci d'avance !

  2. #2
    Membre régulier
    Inscrit en
    Avril 2004
    Messages
    70
    Détails du profil
    Informations forums :
    Inscription : Avril 2004
    Messages : 70
    Points : 84
    Points
    84
    Par défaut Error et Rollback
    Bonjour,
    Cette instruction ne teste que l'instruction qui vient juste avant elle et donc elle ne teste que sur l'ID 6.

    Essaye ceci :
    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
    CREATE PROCEDURE sp_test_transaction
    AS
     
    BEGIN TRANSACTION
     
    INSERT INTO DEGRE_URGENCE(du_id,du_libelle) VALUES(1,'kjmlkl')
      IF @@ERROR <> 0
           BEGIN
               ROLLBACK
               RAISERROR('error occured while recording purchase', 16, 1)
               RETURN 1
           END
    INSERT INTO DEGRE_URGENCE(du_id,du_libelle) VALUES(2,'kjmlkl')
      IF @@ERROR <> 0
           BEGIN
               ROLLBACK
               RAISERROR('error occured while recording purchase', 16, 1)
               RETURN 1
           END
    INSERT INTO DEGRE_URGENCE(du_id,du_libelle) VALUES(6,'kjmlkl')
      IF @@ERROR <> 0
           BEGIN
               ROLLBACK
               RAISERROR('error occured while recording purchase', 16, 1)
               RETURN 1
           END
    RETURN 0
    COMMIT TRANSACTION
    GO
    Le Rollback est avant Raiserror car Rollback Annule tout ce qui vient avant et il ne montre pas le message ( J'ai déjà eu affaire à cela ).
    Le return est pour sortir car Rollback n'arrête pas la procédure mais annule juste ce qui s'est passé avant et continue ce qui vient après. Avec la valeur du return, on teste après appel à la procédure si cette dernière s'est bien déroulée.
    Alors en cas d'erreur, il rollback, il sort le message et il sort de la procédure avec une valeur en retour indiquant l'état du déroulement de la procédure.

Discussions similaires

  1. [SQL Server 2000] Lecture du journal de transaction
    Par luimême dans le forum MS SQL Server
    Réponses: 1
    Dernier message: 28/10/2007, 13h35
  2. [Requête] SQL SERVER 2000 / Transact SQL
    Par plutonium719 dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 11/09/2007, 17h56
  3. [SQL Server 2000] Transaction deadlocked
    Par CyrilT dans le forum MS SQL Server
    Réponses: 1
    Dernier message: 25/09/2006, 15h49
  4. Sql server 2000 DROP et Transaction
    Par fdatdev06 dans le forum MS SQL Server
    Réponses: 12
    Dernier message: 07/08/2006, 09h33
  5. [SQL Server 2000] vider journal de transactions
    Par Abydos Business Group dans le forum MS SQL Server
    Réponses: 5
    Dernier message: 24/03/2006, 19h28

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