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

Développement SQL Server Discussion :

[SQL Serveur 2000] - Trigger gestion erreur


Sujet :

Développement SQL Server

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    111
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 111
    Points : 59
    Points
    59
    Par défaut [SQL Serveur 2000] - Trigger gestion erreur
    Bonjour,

    J'effectue un trigger d'update dans des tables d'une base et j'aimerais savoir si ma requete c'est bien excétuté afin d'enregistrer le résultat dans une autre table.

    Voici une partie de mon trigger pour mieux comprendre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    -- On va modifier l'entete de la facture
    UPDATE F_DOCENTETE SET CA_Num = @Tournee, ORDRE_LIVRAI = @ordreLiv, DO_Piece = 'P'+@Tournee+@ordreLiv, DO_Date = convert(varchar(10),getdate(),103)  WHERE DO_Piece = @IdComm AND DO_Domaine = 0 AND DO_Type = 1
     
    -- On va modifier la ligne de la facture
    UPDATE F_DOCLIGNE SET DO_Type = 2, CA_Num = @Tournee, DO_Piece = 'P'+@Tournee+@ordreLiv, DL_PieceBC = @IdComm, DL_DateBC = DO_Date, DO_Date = convert(varchar(10),getdate(),103) WHERE DO_Piece = @IdComm AND DL_Ligne = @NumLign AND DO_Domaine = 0 AND DO_Type = 1
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    -- SI pas d'erreur dans mes deux triggers j'effectue ce traitement
    UPDATE T_ECHANGES SET DATE_TRAITEMENT = getdate(), STATUT = 'TRAITE'  WHERE IDENTIFIANT = @idEchange
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    -- SI il y a une erreur, j'effectue ce traitement, et j'annule mes deux requetes précedente....
    UPDATE T_ECHANGES SET DATE_TRAITEMENT = getdate(), STATUT = 'ERREUR' ERREUR='détail erreur' WHERE IDENTIFIANT = @idEchange
    rollback transaction
    Il me faudrait également pouvoir récupérer un numéro d'erreur (ou dans le meilleur des cas un libellé sur l'erreur.... pour le mettre dans le champ ERREUR de ma table T_ECHANGES

    Merci d'avance

    Silvia

  2. #2
    Membre éprouvé
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Août 2006
    Messages
    730
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2006
    Messages : 730
    Points : 923
    Points
    923
    Par défaut
    teste le @@ROWCOUNT après ton update, il te renvoies le nombre de lignes affectées par ton instruction. ex:

    update ...
    if @@rowcount=0
    rollback
    else commit

  3. #3
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    21 886
    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 : 21 886
    Points : 53 092
    Points
    53 092
    Billets dans le blog
    6
    Par défaut
    Donnez le code COMPLET de votre trigger, car je voit déjà de GROSSES erreurs !

    A +

  4. #4
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    111
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 111
    Points : 59
    Points
    59
    Par défaut
    Salut,
    Je suis pas trés douer en PL SQL mais voici mon trigger

    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
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
     
    CREATE TRIGGER TG_TEST ON [dbo].[TCOM_TOURNEE] 
    FOR INSERT
    AS
    	DECLARE @NomEchange nvarchar(20), @Ordre nvarchar(20), @TypeEchange nvarchar(20), @Tournee nvarchar(6), @IdComm varchar(12)
    	DECLARE @LibelTran varchar(21)
    	DECLARE @dateChar datetime, @cbMarq int
    	DECLARE @NbTournee int, @idEchange int, @ordreLiv int, @NumLign int
    	DECLARE @Type int, @Ligne int
    	DECLARE @Piece varchar(8), @PieceBC varchar(8)
    	DECLARE @Date datetime, @DateBC datetime
     
    	SELECT @idEchange =  IDENTIFIANT, @Tournee = TOURNEE, @IdComm = NO_COMMANDE, @NumLign = NO_LIGNE, @ordreLiv = ORDRE_LIVRAISON, @LibelTran = LIBELLE_TRANSPORTEUR, @dateChar = DATE_CHGT FROM INSERTED
     
    	-- On regarde si la donnée est à destination de la base SAGE
    	SELECT @NomEchange = T_ECHANGES.DESTINATION, @Ordre = T_ECHANGES.STATUT FROM T_ECHANGES WHERE T_ECHANGES.IDENTIFIANT = @idEchange
    	IF (   (@NomEchange = 'SAGE') AND (@Ordre = 'PRET' ) ) BEGIN
    		SELECT @TypeEchange = ACTION_ECHANGE FROM INSERTED
    		-- Ajout d'une valeur
    		IF (@TypeEchange = 'A') OR (@TypeEchange = 'M') 
    		BEGIN
    			-- On va vérifier si la Tournée existe
    			SELECT @NbTournee = count(*) FROM F_COMPTEA WHERE N_Analytique = 4 AND CA_Num = @Tournee
    			IF ( @NbTournee = 0 )
    			BEGIN
    				-- On ajoute la tournée dans la table F_COMPTEA
    				INSERT INTO F_COMPTEA ( N_Analytique, CA_Num,  CA_INTITULE,  CA_Type, CODE_TRANSPORTEUR,DATE_CHARGEMENT,CA_CLASSEMENT) VALUES (4, @Tournee, 'Tournée n°'+@Tournee , 0,@LibelTran, convert(varchar(10), @dateChar, 103), 'Tournée n°'+@Tournee)
    			END
     
    			-- Traitement d'ajout d'une tournée
    			-- On va modifier l'entete de la facture
    			UPDATE F_DOCENTETE SET DO_Type = 2, CA_Num = @Tournee, DO_Piece = 'P'+@Tournee+@ordreLiv, ORDRE_LIVRAI = @ordreLiv, DO_Date = convert(varchar(10),getdate(),103)  WHERE DO_Piece = @IdComm AND DO_Type = 1
    			IF ( @@ROWCOUNT = 0 ) BEGIN
    				rollback transaction
    				UPDATE T_ECHANGES SET STATUT = 'Problème pour passer la commande '+@IdComm+' en préparation de livraison' , DATE_TRAITEMENT = getdate() WHERE IDENTIFIANT = @idEchange
    			END
    			ELSE BEGIN
     
    				-- On créer un curseur contenant l'ensemble des lignes de cette facture
    			    	DECLARE ListeLigne CURSOR 
    					FOR SELECT DO_Type, Do_Piece, DL_PieceBC, DO_Date, DL_DateBC, DL_Ligne FROM F_DOCLIGNE
    					WHERE DO_Piece = @IdComm AND DO_Domaine = 0 AND DO_Type = 1
    				OPEN ListeLigne
    				FETCH ListeLigne INTO @Type, @Piece, @PieceBC, @Date, @DateBC, @Ligne
    				WHILE @@FETCH_STATUS = 0
    				BEGIN
    					-- On va modifier la ligne de la facture
    					UPDATE F_DOCLIGNE SET DO_Type = 2, CA_Num = @Tournee, DL_PieceBC = DO_Piece, DO_Piece = 'P'+@Tournee+@ordreLiv, DL_DateBC = DO_Date, DO_Date  = convert(varchar(10),getdate(),103)  WHERE DO_Piece = @IdComm AND DO_Type = 1
     
    					FETCH NEXT FROM ListeLigne INTO @Type, @Piece, @PieceBC, @Date, @DateBC, @Ligne
    				END
    				DEALLOCATE ListeLigne
    			END
    		END
    		ELSE IF (@TypeEchange = 'S') 
    		BEGIN
    			-- Traitement de suppression d'une tournée
    			-- On va récupérer le numéro et la date du Bon de Commande avant la transformation
    			DECLARE @NumBL varchar(8), @DateBL datetime
    			SELECT @NumBL = DL_PieceBC, @DateBL = DL_DateBC FROM F_DOCLIGNE WHERE DO_Piece = @IdComm AND DO_Domaine = 0 AND DO_Type = 2
     
    			-- On va modifier l'entete de la facture
    			UPDATE F_DOCENTETE SET DO_Type = 1, CA_Num = null, DO_Piece = @NumBL, ORDRE_LIVRAI = @ordreLiv, DO_Date = @DateBL WHERE DO_Piece = @IdComm AND DO_Type = 2
    			IF ( @@ROWCOUNT = 0 ) BEGIN
    				rollback transaction
    				UPDATE T_ECHANGES SET STATUT = 'Problème pour passer la commande '+@IdComm+' en Bon de commande' , DATE_TRAITEMENT = getdate() WHERE IDENTIFIANT = @idEchange
    			END
     
    			-- On créer un curseur contenant l'ensemble des lignes de cette facture
    		    	DECLARE ListeLigne CURSOR 
    				FOR SELECT DO_Type, Do_Piece, DL_PieceBC, DO_Date, DL_DateBC, DL_Ligne FROM F_DOCLIGNE
    				WHERE DO_Piece = @IdComm AND DO_Domaine = 0 AND DO_Type = 2
    			OPEN ListeLigne
    			FETCH ListeLigne INTO @Type, @Piece, @PieceBC, @Date, @DateBC, @Ligne
    			WHILE @@FETCH_STATUS = 0
    			BEGIN
    				-- On va modifier la ligne de la facture
    				UPDATE F_DOCLIGNE SET DO_Type = 1, CA_Num = null, DL_PieceBC = null, DO_Piece = @NumBL, DL_DateBC = null, DO_Date  = @NumBL WHERE DO_Piece = @IdComm AND DO_Type = 2
     
    				FETCH NEXT FROM ListeLigne INTO @Type, @Piece, @PieceBC, @Date, @DateBC, @Ligne
    			END
    			DEALLOCATE ListeLigne
    		END
    		ELSE
    			-- Autre cas nom traité
    			UPDATE T_ECHANGES SET STATUT = 'ERREUR', ERREUR = ' Type d échange : '+@TypeEchange+' non reconnu dans le champs ACTION_ECHANGE de la table TCOM_TOURNEE', DATE_TRAITEMENT = getdate() WHERE IDENTIFIANT = @idEchange
     
    	END
    MERCI DE NE PAS SE MOQUER JE Débute,

    Si tu as des idées pour mieux l'arranger, merci de me les expliquer en meme tps que les corrections.

    Un truc que je sais pas tro comment faire, il me faut vérifier que tous les updates des lignes se passe bien pour valider l'échange, sinon, j'indique l'erreur et je dois annuler tous les traitements des lignes....

  5. #5
    Membre éprouvé
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Août 2006
    Messages
    730
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2006
    Messages : 730
    Points : 923
    Points
    923
    Par défaut
    queles points:

    1° il te manque les CLOSE ListeLigne avant les DEALLOCATE d'un curseur
    2° au lieu de faire
    -- On va vérifier si la Tournée existe
    SELECT @NbTournee = count(*) FROM F_COMPTEA WHERE N_Analytique = 4 AND CA_Num = @Tournee
    IF ( @NbTournee = 0 )
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    -- On va vérifier si la Tournée existe
    			IF NOT EXISTS(SELECT 1 FROM F_COMPTEA WHERE N_Analytique = 4 AND CA_Num = @Tournee)
    3° au lieu de faire select x from ... puis select y from ... where x=y, fait plutot
    -- On regarde si la donnée est à destination de la base SAGE
    SELECT @NomEchange = ECH.DESTINATION, @Ordre = ECH.STATUT FROM T_ECHANGES ECH
    JOIN INSERTED INS ON INS.IDENTIFIANT=ECH.IDENTIFIANT

    il est dangereux de faire un rollback dans un objet qui n'a pas le begin tran
    => suppose que derrière tu créés une fonction ou un autre trigger qui fait un commit ... alors que tu auras fait un rollback

    5° ne pas des affectations directes du type
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    DL_PieceBC = DO_Piece, DO_Piece = 'P'+@Tournee+@ordreLiv,
    recopie la valeur d'affectation car tu ne sais pas si DO_Piece est affecté quand tu modifie DL_PieceBC

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    DL_PieceBC = 'P'+@Tournee+@ordreLiv, DO_Piece = 'P'+@Tournee+@ordreLiv,
    je te mets le code de ton trigger que j'ai modifié (tu peux encore améliorer)

    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
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
     
    CREATE TRIGGER TG_TEST ON [dbo].[TCOM_TOURNEE] 
    FOR INSERT
    AS
    	DECLARE @NomEchange nvarchar(20), @Ordre nvarchar(20), @TypeEchange nvarchar(20), @Tournee nvarchar(6), @IdComm varchar(12)
    	DECLARE @LibelTran varchar(21)
    	DECLARE @dateChar datetime, @cbMarq int
    	DECLARE @NbTournee int, @idEchange int, @ordreLiv int, @NumLign int
    	DECLARE @Type int, @Ligne int
    	DECLARE @Piece varchar(8), @PieceBC varchar(8)
    	DECLARE @Date datetime, @DateBC datetime
     
    	SELECT @idEchange =  IDENTIFIANT, @Tournee = TOURNEE, @IdComm = NO_COMMANDE, @NumLign = NO_LIGNE, @ordreLiv = ORDRE_LIVRAISON, @LibelTran = LIBELLE_TRANSPORTEUR, @dateChar = DATE_CHGT FROM INSERTED
     
    	-- On regarde si la donnée est à destination de la base SAGE
    	SELECT @NomEchange = ECH.DESTINATION, @Ordre = ECH.STATUT FROM T_ECHANGES ECH 
    	JOIN INSERTED INS ON INS.IDENTIFIANT=ECH.IDENTIFIANT  
     
    	IF (   (@NomEchange = 'SAGE') AND (@Ordre = 'PRET' ) ) BEGIN
    		SELECT @TypeEchange = ACTION_ECHANGE FROM INSERTED
    		-- Ajout d'une valeur
    		IF (@TypeEchange = 'A') OR (@TypeEchange = 'M') 
    		BEGIN
    			-- On va vérifier si la Tournée existe
    			IF NOT EXISTS(SELECT 1 FROM F_COMPTEA WHERE N_Analytique = 4 AND CA_Num = @Tournee)
    		      -- On ajoute la tournée dans la table F_COMPTEA
    			  INSERT INTO F_COMPTEA ( N_Analytique, CA_Num,  CA_INTITULE,  CA_Type, CODE_TRANSPORTEUR,DATE_CHARGEMENT,CA_CLASSEMENT) VALUES (4, @Tournee, 'Tournée n°'+@Tournee , 0,@LibelTran, convert(varchar(10), @dateChar, 103), 'Tournée n°'+@Tournee)
     
    			-- Traitement d'ajout d'une tournée
    			-- On va modifier l'entete de la facture
    			UPDATE F_DOCENTETE SET DO_Type = 2, CA_Num = @Tournee, DO_Piece = 'P'+@Tournee+@ordreLiv, ORDRE_LIVRAI = @ordreLiv, DO_Date = convert(varchar(10),getdate(),103)  WHERE DO_Piece = @IdComm AND DO_Type = 1
    			IF ( @@ROWCOUNT = 0 ) BEGIN
    				rollback transaction
    				UPDATE T_ECHANGES SET STATUT = 'Problème pour passer la commande '+@IdComm+' en préparation de livraison' , DATE_TRAITEMENT = getdate() WHERE IDENTIFIANT = @idEchange
    			END
    			ELSE BEGIN
     
    				-- On créer un curseur contenant l'ensemble des lignes de cette facture
    			    	DECLARE ListeLigne CURSOR 
    					FOR SELECT DO_Type, Do_Piece, DL_PieceBC, DO_Date, DL_DateBC, DL_Ligne FROM F_DOCLIGNE
    					WHERE DO_Piece = @IdComm AND DO_Domaine = 0 AND DO_Type = 1
    				OPEN ListeLigne
    				FETCH ListeLigne INTO @Type, @Piece, @PieceBC, @Date, @DateBC, @Ligne
    				WHILE @@FETCH_STATUS = 0
    				BEGIN
    					-- On va modifier la ligne de la facture
    					UPDATE F_DOCLIGNE SET DO_Type = 2, CA_Num = @Tournee, DL_PieceBC = DO_Piece, DO_Piece = 'P'+@Tournee+@ordreLiv, DL_DateBC = DO_Date, DO_Date  = convert(varchar(10),getdate(),103)  WHERE DO_Piece = @IdComm AND DO_Type = 1
     
    					FETCH NEXT FROM ListeLigne INTO @Type, @Piece, @PieceBC, @Date, @DateBC, @Ligne
    				END
    				CLOSE ListeLigne
    				DEALLOCATE ListeLigne
    			END
    		END
    		ELSE IF (@TypeEchange = 'S') 
    		BEGIN
    			-- Traitement de suppression d'une tournée
    			-- On va récupérer le numéro et la date du Bon de Commande avant la transformation
    			DECLARE @NumBL varchar(8), @DateBL datetime
    			SELECT @NumBL = DL_PieceBC, @DateBL = DL_DateBC FROM F_DOCLIGNE WHERE DO_Piece = @IdComm AND DO_Domaine = 0 AND DO_Type = 2
     
    			-- On va modifier l'entete de la facture
    			UPDATE F_DOCENTETE SET DO_Type = 1, CA_Num = NULL, DO_Piece = @NumBL, ORDRE_LIVRAI = @ordreLiv, DO_Date = @DateBL WHERE DO_Piece = @IdComm AND DO_Type = 2
    			IF ( @@ROWCOUNT = 0 ) BEGIN
    				rollback transaction
    				UPDATE T_ECHANGES SET STATUT = 'Problème pour passer la commande '+@IdComm+' en Bon de commande' , DATE_TRAITEMENT = getdate() WHERE IDENTIFIANT = @idEchange
    			END
     
    			-- On créer un curseur contenant l'ensemble des lignes de cette facture
    		    	DECLARE ListeLigne CURSOR 
    				FOR SELECT DO_Type, Do_Piece, DL_PieceBC, DO_Date, DL_DateBC, DL_Ligne FROM F_DOCLIGNE
    				WHERE DO_Piece = @IdComm AND DO_Domaine = 0 AND DO_Type = 2
    			OPEN ListeLigne
    			FETCH ListeLigne INTO @Type, @Piece, @PieceBC, @Date, @DateBC, @Ligne
    			WHILE @@FETCH_STATUS = 0
    			BEGIN
    				-- On va modifier la ligne de la facture
    				UPDATE F_DOCLIGNE SET DO_Type = 1, CA_Num = NULL, DL_PieceBC = NULL, DO_Piece = @NumBL, DL_DateBC = NULL, DO_Date  = @NumBL WHERE DO_Piece = @IdComm AND DO_Type = 2
     
    				FETCH NEXT FROM ListeLigne INTO @Type, @Piece, @PieceBC, @Date, @DateBC, @Ligne
    			END
    			CLOSE ListeLigne
    			DEALLOCATE ListeLigne
    		END
    		ELSE
    			-- Autre cas nom traité
    			UPDATE T_ECHANGES SET STATUT = 'ERREUR', ERREUR = ' Type d échange : '+@TypeEchange+' non reconnu dans le champs ACTION_ECHANGE de la table TCOM_TOURNEE', DATE_TRAITEMENT = getdate() WHERE IDENTIFIANT = @idEchange
     
    	END

  6. #6
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    111
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 111
    Points : 59
    Points
    59
    Par défaut
    Salut, je te remercie pour les petits conseil que j'ai modifié...

    Mais, juste, je n'ai pas compris le 4° qui a l'air dangeureux d'aprés se que tu m'en dis...
    il est dangereux de faire un rollback dans un objet qui n'a pas le begin tran
    => suppose que derrière tu créés une fonction ou un autre trigger qui fait un commit ... alors que tu auras fait un rollback
    begin tran ??? c'est quoi ???

    Merci d'avance.
    Silvia

  7. #7
    Membre éprouvé
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Août 2006
    Messages
    730
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2006
    Messages : 730
    Points : 923
    Points
    923
    Par défaut
    dans ton code tu as
    IF ( @@ROWCOUNT = 0 ) BEGIN
    rollback transaction
    ce qui signifie que tu annules tout ce qui c'est passé depuis le begin tran
    si tu écris par exmple

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    begin tran
    update toto set tata=1
    commit
    begin tran
    update toto set tata=0
    rollback
    he bien ton champ tata vaudra 1 et pas 0 alors que tu le mets a zéro après l'avoir mis a 1

    suppose que tu écrive maintenant
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    begin tran
    update toto set tata=1
    commit
    update toto set tata=0
    rollback
    la, ton serveur va te renvoyer un message type ' pas de begin tran correspondant au rollback'

    une transaction est "encadrée" par un BEGIN TRAN
    et un COMMIT (ou ROLLBACK)
    regarde
    http://support.microsoft.com/kb/295108/fr

  8. #8
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    111
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 111
    Points : 59
    Points
    59
    Par défaut
    Merci pour tes explications trés claire !!!
    J'ai arranger mon code...


    Merci beaucoup !!!

    Silvia

Discussions similaires

  1. Erreur à l'install de SQL SERVEUR 2000
    Par didpoy dans le forum MS SQL Server
    Réponses: 0
    Dernier message: 22/12/2007, 15h50
  2. Optimisation Trigger sous SQL Serveur 2000
    Par Silvia12 dans le forum Développement
    Réponses: 3
    Dernier message: 30/05/2007, 18h26
  3. Erreur de SQL serveur 2000 en rapport a la réplication
    Par patgou dans le forum Réplications
    Réponses: 1
    Dernier message: 29/12/2006, 19h09
  4. Erreur de SQL serveur 2000 en rapport a la réplication
    Par patgou dans le forum MS SQL Server
    Réponses: 1
    Dernier message: 29/12/2006, 19h09
  5. Réponses: 1
    Dernier message: 02/05/2006, 10h20

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