Bonjour,
je suis entrain de tester les transactions dans mon application
et je gére cela du coté du server ( SQL SERVER 2000).
J'ai une procedure stockée qui va me permettre d'inserer des tuples dans une
table avec gestion des transactions
Code:
CREATE PROCEDURE sp_test_transaction
AS
BEGIN TRANSACTION
INSERT INTO DEGRE_URGENCE(du_id,du_libelle) VALUES(1,'test1')
INSERT INTO DEGRE_URGENCE(du_id,du_libelle) VALUES(2,'test2')
INSERT INTO DEGRE_URGENCE(du_id,du_libelle) VALUES(6,'test3')
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 1 et 3 et 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. Normalement la
transaction ne s'est pas effectuer avec succés, donc aucun n'enregistrement
ne devrait etre insérer. Comment remedier a cela merci d'avance !
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
Med Bouchenafa
Voir SET XACT_ABORT dans l'Aide En Ligne -- Bien cordialement Med Bouchenafa
"AD" wrote in message news:
Bonjour, je suis entrain de tester les transactions dans mon application et je gére cela du coté du server ( SQL SERVER 2000). J'ai une procedure stockée qui va me permettre d'inserer des tuples dans une table avec gestion des transactions
Code:
CREATE PROCEDURE sp_test_transaction AS
BEGIN TRANSACTION
INSERT INTO DEGRE_URGENCE(du_id,du_libelle) VALUES(1,'test1')
INSERT INTO DEGRE_URGENCE(du_id,du_libelle) VALUES(2,'test2') INSERT INTO DEGRE_URGENCE(du_id,du_libelle) VALUES(6,'test3')
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 1 et 3 et 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. Normalement la transaction ne s'est pas effectuer avec succés, donc aucun n'enregistrement ne devrait etre insérer. Comment remedier a cela merci d'avance !
Voir SET XACT_ABORT dans l'Aide En Ligne
--
Bien cordialement
Med Bouchenafa
"AD" <AD@discussions.microsoft.com> wrote in message
news:60C76D38-F042-402D-A0C0-D60B5767EB5D@microsoft.com...
Bonjour,
je suis entrain de tester les transactions dans mon application
et je gére cela du coté du server ( SQL SERVER 2000).
J'ai une procedure stockée qui va me permettre d'inserer des tuples dans
une
table avec gestion des transactions
Code:
CREATE PROCEDURE sp_test_transaction
AS
BEGIN TRANSACTION
INSERT INTO DEGRE_URGENCE(du_id,du_libelle) VALUES(1,'test1')
INSERT INTO DEGRE_URGENCE(du_id,du_libelle) VALUES(2,'test2')
INSERT INTO DEGRE_URGENCE(du_id,du_libelle) VALUES(6,'test3')
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 1 et 3 et 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. Normalement la
transaction ne s'est pas effectuer avec succés, donc aucun
n'enregistrement
ne devrait etre insérer. Comment remedier a cela merci d'avance !
Voir SET XACT_ABORT dans l'Aide En Ligne -- Bien cordialement Med Bouchenafa
"AD" wrote in message news:
Bonjour, je suis entrain de tester les transactions dans mon application et je gére cela du coté du server ( SQL SERVER 2000). J'ai une procedure stockée qui va me permettre d'inserer des tuples dans une table avec gestion des transactions
Code:
CREATE PROCEDURE sp_test_transaction AS
BEGIN TRANSACTION
INSERT INTO DEGRE_URGENCE(du_id,du_libelle) VALUES(1,'test1')
INSERT INTO DEGRE_URGENCE(du_id,du_libelle) VALUES(2,'test2') INSERT INTO DEGRE_URGENCE(du_id,du_libelle) VALUES(6,'test3')
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 1 et 3 et 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. Normalement la transaction ne s'est pas effectuer avec succés, donc aucun n'enregistrement ne devrait etre insérer. Comment remedier a cela merci d'avance !
Pascal Soveaux
"AD" wrote in message news:
Bonjour, je suis entrain de tester les transactions dans mon application et je gére cela du coté du server ( SQL SERVER 2000). J'ai une procedure stockée qui va me permettre d'inserer des tuples dans une table avec gestion des transactions
"Because @@ERROR is cleared and reset on each statement executed, check it immediately following the statement validated, or save it to a local variable that can be checked later."
Code:
CREATE PROCEDURE sp_test_transaction AS
(?) SET NOCOUNT ON
BEGIN TRANSACTION
INSERT INTO DEGRE_URGENCE(du_id,du_libelle) VALUES(1,'test1')
@@ERROR <> 0
INSERT INTO DEGRE_URGENCE(du_id,du_libelle) VALUES(2,'test2')
@@ERROR <> 0
INSERT INTO DEGRE_URGENCE(du_id,du_libelle) VALUES(6,'test3')
@@ERROR == 0 car SUCCES
IF @@ERROR <> 0 BEGIN RAISERROR('error occured while recording purchase', 16, 1) ROLLBACK SELECT 0
Plutôt RETURN -1 (par convention 0 == NO_ERROR) "Most stored procedures follow the convention of using the return code to indicate the success or failure of the stored procedure. The stored procedures return a value of 0 when no errors were encountered. Any nonzero value indicates an error occurred."
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 1 et 3 et 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. Normalement la transaction ne s'est pas effectuer avec succés, donc aucun n'enregistrement ne devrait etre insérer. Comment remedier a cela merci d'avance !
Pascal
"AD" <AD@discussions.microsoft.com> wrote in message
news:60C76D38-F042-402D-A0C0-D60B5767EB5D@microsoft.com...
Bonjour,
je suis entrain de tester les transactions dans mon application
et je gére cela du coté du server ( SQL SERVER 2000).
J'ai une procedure stockée qui va me permettre d'inserer des tuples dans
une
table avec gestion des transactions
"Because @@ERROR is cleared and reset on each statement executed, check it
immediately following the statement validated, or save it to a local
variable that can be checked later."
Code:
CREATE PROCEDURE sp_test_transaction
AS
(?) SET NOCOUNT ON
BEGIN TRANSACTION
INSERT INTO DEGRE_URGENCE(du_id,du_libelle) VALUES(1,'test1')
@@ERROR <> 0
INSERT INTO DEGRE_URGENCE(du_id,du_libelle) VALUES(2,'test2')
@@ERROR <> 0
INSERT INTO DEGRE_URGENCE(du_id,du_libelle) VALUES(6,'test3')
@@ERROR == 0 car SUCCES
IF @@ERROR <> 0
BEGIN
RAISERROR('error occured while recording purchase', 16, 1)
ROLLBACK
SELECT 0
Plutôt RETURN -1 (par convention 0 == NO_ERROR)
"Most stored procedures follow the convention of using the return code to
indicate the success or failure of the stored procedure. The stored
procedures return a value of 0 when no errors were encountered. Any nonzero
value indicates an error occurred."
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 1 et 3 et 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. Normalement la
transaction ne s'est pas effectuer avec succés, donc aucun
n'enregistrement
ne devrait etre insérer. Comment remedier a cela merci d'avance !
Bonjour, je suis entrain de tester les transactions dans mon application et je gére cela du coté du server ( SQL SERVER 2000). J'ai une procedure stockée qui va me permettre d'inserer des tuples dans une table avec gestion des transactions
"Because @@ERROR is cleared and reset on each statement executed, check it immediately following the statement validated, or save it to a local variable that can be checked later."
Code:
CREATE PROCEDURE sp_test_transaction AS
(?) SET NOCOUNT ON
BEGIN TRANSACTION
INSERT INTO DEGRE_URGENCE(du_id,du_libelle) VALUES(1,'test1')
@@ERROR <> 0
INSERT INTO DEGRE_URGENCE(du_id,du_libelle) VALUES(2,'test2')
@@ERROR <> 0
INSERT INTO DEGRE_URGENCE(du_id,du_libelle) VALUES(6,'test3')
@@ERROR == 0 car SUCCES
IF @@ERROR <> 0 BEGIN RAISERROR('error occured while recording purchase', 16, 1) ROLLBACK SELECT 0
Plutôt RETURN -1 (par convention 0 == NO_ERROR) "Most stored procedures follow the convention of using the return code to indicate the success or failure of the stored procedure. The stored procedures return a value of 0 when no errors were encountered. Any nonzero value indicates an error occurred."
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 1 et 3 et 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. Normalement la transaction ne s'est pas effectuer avec succés, donc aucun n'enregistrement ne devrait etre insérer. Comment remedier a cela merci d'avance !
Pascal
Fred BROUARD
CREATE PROCEDURE sp_test_transaction AS
BEGIN TRANSACTION
INSERT INTO DEGRE_URGENCE(du_id,du_libelle) VALUES(1,'test1') IF @@ERROR <> 0 GOTO LBL_ERROR
INSERT INTO DEGRE_URGENCE(du_id,du_libelle) VALUES(2,'test2') IF @@ERROR <> 0 GOTO LBL_ERROR
INSERT INTO DEGRE_URGENCE(du_id,du_libelle) VALUES(6,'test3') IF @@ERROR <> 0 GOTO LBL_ERROR
COMMIT TRANSACTION RETURN
LBL_ERROR:
RAISERROR('error occured while recording purchase', 16, 1) ROLLBACK TRANSACTION
A +
AD a écrit:
Bonjour, je suis entrain de tester les transactions dans mon application et je gére cela du coté du server ( SQL SERVER 2000). J'ai une procedure stockée qui va me permettre d'inserer des tuples dans une table avec gestion des transactions
Code:
CREATE PROCEDURE sp_test_transaction AS
BEGIN TRANSACTION
INSERT INTO DEGRE_URGENCE(du_id,du_libelle) VALUES(1,'test1')
INSERT INTO DEGRE_URGENCE(du_id,du_libelle) VALUES(2,'test2') INSERT INTO DEGRE_URGENCE(du_id,du_libelle) VALUES(6,'test3')
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 1 et 3 et 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. Normalement la transaction ne s'est pas effectuer avec succés, donc aucun n'enregistrement ne devrait etre insérer. Comment remedier a cela merci d'avance !
-- Frédéric BROUARD, MVP SQL Server. Expert SQL / spécialiste Delphi, web Livre SQL - col. Référence : http://sqlpro.developpez.com/bookSQL.html Le site du SQL, pour débutants et pros : http://sqlpro.developpez.com ************************ www.datasapiens.com *************************
CREATE PROCEDURE sp_test_transaction
AS
BEGIN TRANSACTION
INSERT INTO DEGRE_URGENCE(du_id,du_libelle) VALUES(1,'test1')
IF @@ERROR <> 0
GOTO LBL_ERROR
INSERT INTO DEGRE_URGENCE(du_id,du_libelle) VALUES(2,'test2')
IF @@ERROR <> 0
GOTO LBL_ERROR
INSERT INTO DEGRE_URGENCE(du_id,du_libelle) VALUES(6,'test3')
IF @@ERROR <> 0
GOTO LBL_ERROR
COMMIT TRANSACTION
RETURN
LBL_ERROR:
RAISERROR('error occured while recording purchase', 16, 1)
ROLLBACK TRANSACTION
A +
AD a écrit:
Bonjour,
je suis entrain de tester les transactions dans mon application
et je gére cela du coté du server ( SQL SERVER 2000).
J'ai une procedure stockée qui va me permettre d'inserer des tuples dans une
table avec gestion des transactions
Code:
CREATE PROCEDURE sp_test_transaction
AS
BEGIN TRANSACTION
INSERT INTO DEGRE_URGENCE(du_id,du_libelle) VALUES(1,'test1')
INSERT INTO DEGRE_URGENCE(du_id,du_libelle) VALUES(2,'test2')
INSERT INTO DEGRE_URGENCE(du_id,du_libelle) VALUES(6,'test3')
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 1 et 3 et 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. Normalement la
transaction ne s'est pas effectuer avec succés, donc aucun n'enregistrement
ne devrait etre insérer. Comment remedier a cela merci d'avance !
--
Frédéric BROUARD, MVP SQL Server. Expert SQL / spécialiste Delphi, web
Livre SQL - col. Référence : http://sqlpro.developpez.com/bookSQL.html
Le site du SQL, pour débutants et pros : http://sqlpro.developpez.com
************************ www.datasapiens.com *************************
INSERT INTO DEGRE_URGENCE(du_id,du_libelle) VALUES(1,'test1') IF @@ERROR <> 0 GOTO LBL_ERROR
INSERT INTO DEGRE_URGENCE(du_id,du_libelle) VALUES(2,'test2') IF @@ERROR <> 0 GOTO LBL_ERROR
INSERT INTO DEGRE_URGENCE(du_id,du_libelle) VALUES(6,'test3') IF @@ERROR <> 0 GOTO LBL_ERROR
COMMIT TRANSACTION RETURN
LBL_ERROR:
RAISERROR('error occured while recording purchase', 16, 1) ROLLBACK TRANSACTION
A +
AD a écrit:
Bonjour, je suis entrain de tester les transactions dans mon application et je gére cela du coté du server ( SQL SERVER 2000). J'ai une procedure stockée qui va me permettre d'inserer des tuples dans une table avec gestion des transactions
Code:
CREATE PROCEDURE sp_test_transaction AS
BEGIN TRANSACTION
INSERT INTO DEGRE_URGENCE(du_id,du_libelle) VALUES(1,'test1')
INSERT INTO DEGRE_URGENCE(du_id,du_libelle) VALUES(2,'test2') INSERT INTO DEGRE_URGENCE(du_id,du_libelle) VALUES(6,'test3')
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 1 et 3 et 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. Normalement la transaction ne s'est pas effectuer avec succés, donc aucun n'enregistrement ne devrait etre insérer. Comment remedier a cela merci d'avance !
-- Frédéric BROUARD, MVP SQL Server. Expert SQL / spécialiste Delphi, web Livre SQL - col. Référence : http://sqlpro.developpez.com/bookSQL.html Le site du SQL, pour débutants et pros : http://sqlpro.developpez.com ************************ www.datasapiens.com *************************