Bonjour.
j'ai réalisé grace à votre aide 2 requêtes ( insertion de lignes dans une
table de sauvegarde et destruction des lignes copiées dans la table
d'origine ).
Dans ma demande d'aide pour réalisation de ces requétes il est dit de gerer
une transaction pour étre sur d'avoir un résultat cohérent à la fin du proces.
OK pour ça, j'ai donc regardé le sujet sur "devellopez. com" et comme je ne
connais rien au sujet , je n'arrive pas à comprendre la démarche et comment
réaliser ce code.
Donc encore une fois je fais appel à vous pour contruire et m'expliquer les
manip. à suivre.
Le but final et de faire un ensemble des requêtes pour 20 tables que je
souhaite archiver
Voici un bout de la requête que je souhaite intéger à une transaction
/*----------------------------------------------------------------
Copier les données de la table ‘MOUVMNT’ dans ‘ARCH_MOUVEMNT’
Création d’alias pour éviter d'écrire le nom des tables en entier.
A pour Dbo.MATERIEL
B pour Dbo.MOUVEMNT
Filtres pour les critères suivants
SITE = EXT et FIN
BATIMENT <> EN ATTENTE et A GERER
DATE_INVENTAIRE <> ce jour moins 365 jours
> -----------------------------------------------------------------*/
insert into E_ARCH_MOUVEMNT
select *
From MOUVEMNT
where CLE_MATERIEL in (select distinct a.CLE_MATERIEL
from MATERIEL a LEFT OUTER JOIN
MOUVEMNT b ON a.CLE_MATERIEL = a.CLE_MATERIEL
WHERE a.DATE_INVENTAIRE <DATEADD(Day, -
365,CURRENT_TIMESTAMP)
AND a.SITE IN ('EXT', 'FIN')
and a.BATIMENT NOT IN ('EN ATTENTE', 'A GERER'))
Merci de votre aide.
Bonjour.
j'ai réalisé grace à votre aide 2 requêtes ( insertion de lignes dans une
table de sauvegarde et destruction des lignes copiées dans la table
d'origine ).
Dans ma demande d'aide pour réalisation de ces requétes il est dit de gerer
une transaction pour étre sur d'avoir un résultat cohérent à la fin du proces.
OK pour ça, j'ai donc regardé le sujet sur "devellopez. com" et comme je ne
connais rien au sujet , je n'arrive pas à comprendre la démarche et comment
réaliser ce code.
Donc encore une fois je fais appel à vous pour contruire et m'expliquer les
manip. à suivre.
Le but final et de faire un ensemble des requêtes pour 20 tables que je
souhaite archiver
Voici un bout de la requête que je souhaite intéger à une transaction
/*----------------------------------------------------------------
Copier les données de la table ‘MOUVMNT’ dans ‘ARCH_MOUVEMNT’
Création d’alias pour éviter d'écrire le nom des tables en entier.
A pour Dbo.MATERIEL
B pour Dbo.MOUVEMNT
Filtres pour les critères suivants
SITE = EXT et FIN
BATIMENT <> EN ATTENTE et A GERER
DATE_INVENTAIRE <> ce jour moins 365 jours
> -----------------------------------------------------------------*/
insert into E_ARCH_MOUVEMNT
select *
From MOUVEMNT
where CLE_MATERIEL in (select distinct a.CLE_MATERIEL
from MATERIEL a LEFT OUTER JOIN
MOUVEMNT b ON a.CLE_MATERIEL = a.CLE_MATERIEL
WHERE a.DATE_INVENTAIRE <DATEADD(Day, -
365,CURRENT_TIMESTAMP)
AND a.SITE IN ('EXT', 'FIN')
and a.BATIMENT NOT IN ('EN ATTENTE', 'A GERER'))
Merci de votre aide.
Bonjour.
j'ai réalisé grace à votre aide 2 requêtes ( insertion de lignes dans une
table de sauvegarde et destruction des lignes copiées dans la table
d'origine ).
Dans ma demande d'aide pour réalisation de ces requétes il est dit de gerer
une transaction pour étre sur d'avoir un résultat cohérent à la fin du proces.
OK pour ça, j'ai donc regardé le sujet sur "devellopez. com" et comme je ne
connais rien au sujet , je n'arrive pas à comprendre la démarche et comment
réaliser ce code.
Donc encore une fois je fais appel à vous pour contruire et m'expliquer les
manip. à suivre.
Le but final et de faire un ensemble des requêtes pour 20 tables que je
souhaite archiver
Voici un bout de la requête que je souhaite intéger à une transaction
/*----------------------------------------------------------------
Copier les données de la table ‘MOUVMNT’ dans ‘ARCH_MOUVEMNT’
Création d’alias pour éviter d'écrire le nom des tables en entier.
A pour Dbo.MATERIEL
B pour Dbo.MOUVEMNT
Filtres pour les critères suivants
SITE = EXT et FIN
BATIMENT <> EN ATTENTE et A GERER
DATE_INVENTAIRE <> ce jour moins 365 jours
> -----------------------------------------------------------------*/
insert into E_ARCH_MOUVEMNT
select *
From MOUVEMNT
where CLE_MATERIEL in (select distinct a.CLE_MATERIEL
from MATERIEL a LEFT OUTER JOIN
MOUVEMNT b ON a.CLE_MATERIEL = a.CLE_MATERIEL
WHERE a.DATE_INVENTAIRE <DATEADD(Day, -
365,CURRENT_TIMESTAMP)
AND a.SITE IN ('EXT', 'FIN')
and a.BATIMENT NOT IN ('EN ATTENTE', 'A GERER'))
Merci de votre aide.
Bonjour,
Par d'afaut pour SQL Server chaque instruction représente une transaction.
Pour gérer plus finement une transaction, il faut la démarrer de manière
explicite par BEGIN TRAN
Puis la terminer en succès par COMMIT TRAN
Après chaque insertion il est possible de tester la présence ou non d'une
erreur(if @@error<>0) et d'annuler la TOTALITE de la transaction par
ROLLBACK TRAN
Bon courage
"Richard" a écrit :
> Bonjour.
>
> j'ai réalisé grace à votre aide 2 requêtes ( insertion de lignes dans une
> table de sauvegarde et destruction des lignes copiées dans la table
> d'origine ).
>
> Dans ma demande d'aide pour réalisation de ces requétes il est dit de gerer
> une transaction pour étre sur d'avoir un résultat cohérent à la fin du proces.
>
> OK pour ça, j'ai donc regardé le sujet sur "devellopez. com" et comme je ne
> connais rien au sujet , je n'arrive pas à comprendre la démarche et comment
> réaliser ce code.
>
> Donc encore une fois je fais appel à vous pour contruire et m'expliquer les
> manip. à suivre.
> Le but final et de faire un ensemble des requêtes pour 20 tables que je
> souhaite archiver
>
> Voici un bout de la requête que je souhaite intéger à une transaction
>
> /*----------------------------------------------------------------
> Copier les données de la table ‘MOUVMNT’ dans ‘ARCH_MOUVEMNT’
>
> Création d’alias pour éviter d'écrire le nom des tables en entier.
>
> A pour Dbo.MATERIEL
> B pour Dbo.MOUVEMNT
>
>
> Filtres pour les critères suivants
>
> SITE = EXT et FIN
> BATIMENT <> EN ATTENTE et A GERER
> DATE_INVENTAIRE <> ce jour moins 365 jours
> > -----------------------------------------------------------------*/
>
> insert into E_ARCH_MOUVEMNT
> select *
> From MOUVEMNT
> where CLE_MATERIEL in (select distinct a.CLE_MATERIEL
> from MATERIEL a LEFT OUTER JOIN
> MOUVEMNT b ON a.CLE_MATERIEL = a.CLE_MATERIEL
> WHERE a.DATE_INVENTAIRE <DATEADD(Day, -
> 365,CURRENT_TIMESTAMP)
> AND a.SITE IN ('EXT', 'FIN')
> and a.BATIMENT NOT IN ('EN ATTENTE', 'A GERER'))
>
> Merci de votre aide.
>
>
Bonjour,
Par d'afaut pour SQL Server chaque instruction représente une transaction.
Pour gérer plus finement une transaction, il faut la démarrer de manière
explicite par BEGIN TRAN
Puis la terminer en succès par COMMIT TRAN
Après chaque insertion il est possible de tester la présence ou non d'une
erreur(if @@error<>0) et d'annuler la TOTALITE de la transaction par
ROLLBACK TRAN
Bon courage
"Richard" a écrit :
> Bonjour.
>
> j'ai réalisé grace à votre aide 2 requêtes ( insertion de lignes dans une
> table de sauvegarde et destruction des lignes copiées dans la table
> d'origine ).
>
> Dans ma demande d'aide pour réalisation de ces requétes il est dit de gerer
> une transaction pour étre sur d'avoir un résultat cohérent à la fin du proces.
>
> OK pour ça, j'ai donc regardé le sujet sur "devellopez. com" et comme je ne
> connais rien au sujet , je n'arrive pas à comprendre la démarche et comment
> réaliser ce code.
>
> Donc encore une fois je fais appel à vous pour contruire et m'expliquer les
> manip. à suivre.
> Le but final et de faire un ensemble des requêtes pour 20 tables que je
> souhaite archiver
>
> Voici un bout de la requête que je souhaite intéger à une transaction
>
> /*----------------------------------------------------------------
> Copier les données de la table ‘MOUVMNT’ dans ‘ARCH_MOUVEMNT’
>
> Création d’alias pour éviter d'écrire le nom des tables en entier.
>
> A pour Dbo.MATERIEL
> B pour Dbo.MOUVEMNT
>
>
> Filtres pour les critères suivants
>
> SITE = EXT et FIN
> BATIMENT <> EN ATTENTE et A GERER
> DATE_INVENTAIRE <> ce jour moins 365 jours
> > -----------------------------------------------------------------*/
>
> insert into E_ARCH_MOUVEMNT
> select *
> From MOUVEMNT
> where CLE_MATERIEL in (select distinct a.CLE_MATERIEL
> from MATERIEL a LEFT OUTER JOIN
> MOUVEMNT b ON a.CLE_MATERIEL = a.CLE_MATERIEL
> WHERE a.DATE_INVENTAIRE <DATEADD(Day, -
> 365,CURRENT_TIMESTAMP)
> AND a.SITE IN ('EXT', 'FIN')
> and a.BATIMENT NOT IN ('EN ATTENTE', 'A GERER'))
>
> Merci de votre aide.
>
>
Bonjour,
Par d'afaut pour SQL Server chaque instruction représente une transaction.
Pour gérer plus finement une transaction, il faut la démarrer de manière
explicite par BEGIN TRAN
Puis la terminer en succès par COMMIT TRAN
Après chaque insertion il est possible de tester la présence ou non d'une
erreur(if @@error<>0) et d'annuler la TOTALITE de la transaction par
ROLLBACK TRAN
Bon courage
"Richard" a écrit :
> Bonjour.
>
> j'ai réalisé grace à votre aide 2 requêtes ( insertion de lignes dans une
> table de sauvegarde et destruction des lignes copiées dans la table
> d'origine ).
>
> Dans ma demande d'aide pour réalisation de ces requétes il est dit de gerer
> une transaction pour étre sur d'avoir un résultat cohérent à la fin du proces.
>
> OK pour ça, j'ai donc regardé le sujet sur "devellopez. com" et comme je ne
> connais rien au sujet , je n'arrive pas à comprendre la démarche et comment
> réaliser ce code.
>
> Donc encore une fois je fais appel à vous pour contruire et m'expliquer les
> manip. à suivre.
> Le but final et de faire un ensemble des requêtes pour 20 tables que je
> souhaite archiver
>
> Voici un bout de la requête que je souhaite intéger à une transaction
>
> /*----------------------------------------------------------------
> Copier les données de la table ‘MOUVMNT’ dans ‘ARCH_MOUVEMNT’
>
> Création d’alias pour éviter d'écrire le nom des tables en entier.
>
> A pour Dbo.MATERIEL
> B pour Dbo.MOUVEMNT
>
>
> Filtres pour les critères suivants
>
> SITE = EXT et FIN
> BATIMENT <> EN ATTENTE et A GERER
> DATE_INVENTAIRE <> ce jour moins 365 jours
> > -----------------------------------------------------------------*/
>
> insert into E_ARCH_MOUVEMNT
> select *
> From MOUVEMNT
> where CLE_MATERIEL in (select distinct a.CLE_MATERIEL
> from MATERIEL a LEFT OUTER JOIN
> MOUVEMNT b ON a.CLE_MATERIEL = a.CLE_MATERIEL
> WHERE a.DATE_INVENTAIRE <DATEADD(Day, -
> 365,CURRENT_TIMESTAMP)
> AND a.SITE IN ('EXT', 'FIN')
> and a.BATIMENT NOT IN ('EN ATTENTE', 'A GERER'))
>
> Merci de votre aide.
>
>
Bonjour,
Par d'afaut pour SQL Server chaque instruction représente une transaction.
Pour gérer plus finement une transaction, il faut la démarrer de manière
explicite par BEGIN TRAN
Puis la terminer en succès par COMMIT TRAN
Après chaque insertion il est possible de tester la présence ou non d'une
erreur(if @@error<>0) et d'annuler la TOTALITE de la transaction par
ROLLBACK TRAN
Bon courage
"Richard" a écrit :
> Bonjour.
>
> j'ai réalisé grace à votre aide 2 requêtes ( insertion de lignes dans une
> table de sauvegarde et destruction des lignes copiées dans la table
> d'origine ).
>
> Dans ma demande d'aide pour réalisation de ces requétes il est dit de gerer
> une transaction pour étre sur d'avoir un résultat cohérent à la fin du proces.
>
> OK pour ça, j'ai donc regardé le sujet sur "devellopez. com" et comme je ne
> connais rien au sujet , je n'arrive pas à comprendre la démarche et comment
> réaliser ce code.
>
> Donc encore une fois je fais appel à vous pour contruire et m'expliquer les
> manip. à suivre.
> Le but final et de faire un ensemble des requêtes pour 20 tables que je
> souhaite archiver
>
> Voici un bout de la requête que je souhaite intéger à une transaction
>
> /*----------------------------------------------------------------
> Copier les données de la table ‘MOUVMNT’ dans ‘ARCH_MOUVEMNT’
>
> Création d’alias pour éviter d'écrire le nom des tables en entier.
>
> A pour Dbo.MATERIEL
> B pour Dbo.MOUVEMNT
>
>
> Filtres pour les critères suivants
>
> SITE = EXT et FIN
> BATIMENT <> EN ATTENTE et A GERER
> DATE_INVENTAIRE <> ce jour moins 365 jours
> > -----------------------------------------------------------------*/
>
> insert into E_ARCH_MOUVEMNT
> select *
> From MOUVEMNT
> where CLE_MATERIEL in (select distinct a.CLE_MATERIEL
> from MATERIEL a LEFT OUTER JOIN
> MOUVEMNT b ON a.CLE_MATERIEL = a.CLE_MATERIEL
> WHERE a.DATE_INVENTAIRE <DATEADD(Day, -
> 365,CURRENT_TIMESTAMP)
> AND a.SITE IN ('EXT', 'FIN')
> and a.BATIMENT NOT IN ('EN ATTENTE', 'A GERER'))
>
> Merci de votre aide.
>
>
Bonjour,
Par d'afaut pour SQL Server chaque instruction représente une transaction.
Pour gérer plus finement une transaction, il faut la démarrer de manière
explicite par BEGIN TRAN
Puis la terminer en succès par COMMIT TRAN
Après chaque insertion il est possible de tester la présence ou non d'une
erreur(if @@error<>0) et d'annuler la TOTALITE de la transaction par
ROLLBACK TRAN
Bon courage
"Richard" a écrit :
> Bonjour.
>
> j'ai réalisé grace à votre aide 2 requêtes ( insertion de lignes dans une
> table de sauvegarde et destruction des lignes copiées dans la table
> d'origine ).
>
> Dans ma demande d'aide pour réalisation de ces requétes il est dit de gerer
> une transaction pour étre sur d'avoir un résultat cohérent à la fin du proces.
>
> OK pour ça, j'ai donc regardé le sujet sur "devellopez. com" et comme je ne
> connais rien au sujet , je n'arrive pas à comprendre la démarche et comment
> réaliser ce code.
>
> Donc encore une fois je fais appel à vous pour contruire et m'expliquer les
> manip. à suivre.
> Le but final et de faire un ensemble des requêtes pour 20 tables que je
> souhaite archiver
>
> Voici un bout de la requête que je souhaite intéger à une transaction
>
> /*----------------------------------------------------------------
> Copier les données de la table ‘MOUVMNT’ dans ‘ARCH_MOUVEMNT’
>
> Création d’alias pour éviter d'écrire le nom des tables en entier.
>
> A pour Dbo.MATERIEL
> B pour Dbo.MOUVEMNT
>
>
> Filtres pour les critères suivants
>
> SITE = EXT et FIN
> BATIMENT <> EN ATTENTE et A GERER
> DATE_INVENTAIRE <> ce jour moins 365 jours
> > -----------------------------------------------------------------*/
>
> insert into E_ARCH_MOUVEMNT
> select *
> From MOUVEMNT
> where CLE_MATERIEL in (select distinct a.CLE_MATERIEL
> from MATERIEL a LEFT OUTER JOIN
> MOUVEMNT b ON a.CLE_MATERIEL = a.CLE_MATERIEL
> WHERE a.DATE_INVENTAIRE <DATEADD(Day, -
> 365,CURRENT_TIMESTAMP)
> AND a.SITE IN ('EXT', 'FIN')
> and a.BATIMENT NOT IN ('EN ATTENTE', 'A GERER'))
>
> Merci de votre aide.
>
>
Bonjour,
Par d'afaut pour SQL Server chaque instruction représente une transaction.
Pour gérer plus finement une transaction, il faut la démarrer de manière
explicite par BEGIN TRAN
Puis la terminer en succès par COMMIT TRAN
Après chaque insertion il est possible de tester la présence ou non d'une
erreur(if @@error<>0) et d'annuler la TOTALITE de la transaction par
ROLLBACK TRAN
Bon courage
"Richard" a écrit :
> Bonjour.
>
> j'ai réalisé grace à votre aide 2 requêtes ( insertion de lignes dans une
> table de sauvegarde et destruction des lignes copiées dans la table
> d'origine ).
>
> Dans ma demande d'aide pour réalisation de ces requétes il est dit de gerer
> une transaction pour étre sur d'avoir un résultat cohérent à la fin du proces.
>
> OK pour ça, j'ai donc regardé le sujet sur "devellopez. com" et comme je ne
> connais rien au sujet , je n'arrive pas à comprendre la démarche et comment
> réaliser ce code.
>
> Donc encore une fois je fais appel à vous pour contruire et m'expliquer les
> manip. à suivre.
> Le but final et de faire un ensemble des requêtes pour 20 tables que je
> souhaite archiver
>
> Voici un bout de la requête que je souhaite intéger à une transaction
>
> /*----------------------------------------------------------------
> Copier les données de la table ‘MOUVMNT’ dans ‘ARCH_MOUVEMNT’
>
> Création d’alias pour éviter d'écrire le nom des tables en entier.
>
> A pour Dbo.MATERIEL
> B pour Dbo.MOUVEMNT
>
>
> Filtres pour les critères suivants
>
> SITE = EXT et FIN
> BATIMENT <> EN ATTENTE et A GERER
> DATE_INVENTAIRE <> ce jour moins 365 jours
> > -----------------------------------------------------------------*/
>
> insert into E_ARCH_MOUVEMNT
> select *
> From MOUVEMNT
> where CLE_MATERIEL in (select distinct a.CLE_MATERIEL
> from MATERIEL a LEFT OUTER JOIN
> MOUVEMNT b ON a.CLE_MATERIEL = a.CLE_MATERIEL
> WHERE a.DATE_INVENTAIRE <DATEADD(Day, -
> 365,CURRENT_TIMESTAMP)
> AND a.SITE IN ('EXT', 'FIN')
> and a.BATIMENT NOT IN ('EN ATTENTE', 'A GERER'))
>
> Merci de votre aide.
>
>
Désolé j'avais oublier le code réalisé, le voici:
BEGIN TRAN
insert into E_ARCH_MOUVEMNT
select *
From MOUVEMNT
where CLE_MATERIEL in (select distinct a.CLE_MATERIEL
from MATERIEL a LEFT OUTER JOIN
MOUVEMNT b ON a.CLE_MATERIEL = a.CLE_MATERIEL
WHERE a.DATE_INVENTAIRE <DATEADD(Day, -
365,CURRENT_TIMESTAMP)
AND a.SITE IN ('EXT', 'FIN')
and a.BATIMENT NOT IN ('EN ATTENTE', 'A GERER'))
if @@error<>0
ROLLBACK TRAN
COMMIT TRAN
Bonjour et merçi pour cette réponse. Parcontre j'ai besoin d'un complément
d'information.
J'ai intégré ce code à ma requête, de la maniére suivante et je n'ai pas de
message d'erreur.Cela semble fonctionner
Je suis surpris que cela fonctionne du premier coup.
Pouvez vous m'indiquer si la réquête est elle bien construite.
y a t il un moyen de créer une erreur pour valider que j'ai bien construit
cette requête.
L'ensemble BEGIN TRAN et COMMIT TRAN peut t'il englober l'ensemble de la
requêt ou est il préferable de travailler par bloque
exemple:
BEGIN TRAN "requêt insert" COMMIT TRAN et BEGIN TRAN "requête delete" COMMIT
TRAN
"jgabillaud" a écrit :Bonjour,
Par d'afaut pour SQL Server chaque instruction représente une transaction.
Pour gérer plus finement une transaction, il faut la démarrer de manière
explicite par BEGIN TRAN
Puis la terminer en succès par COMMIT TRAN
Après chaque insertion il est possible de tester la présence ou non d'une
erreur(if @@error<>0) et d'annuler la TOTALITE de la transaction par
ROLLBACK TRAN
Bon courage
"Richard" a écrit :Bonjour.
j'ai réalisé grace à votre aide 2 requêtes ( insertion de lignes dans une
table de sauvegarde et destruction des lignes copiées dans la table
d'origine ).
Dans ma demande d'aide pour réalisation de ces requétes il est dit de gerer
une transaction pour étre sur d'avoir un résultat cohérent à la fin du proces.
OK pour ça, j'ai donc regardé le sujet sur "devellopez. com" et comme je ne
connais rien au sujet , je n'arrive pas à comprendre la démarche et comment
réaliser ce code.
Donc encore une fois je fais appel à vous pour contruire et m'expliquer les
manip. à suivre.
Le but final et de faire un ensemble des requêtes pour 20 tables que je
souhaite archiver
Voici un bout de la requête que je souhaite intéger à une transaction
/*----------------------------------------------------------------
Copier les données de la table ‘MOUVMNT’ dans ‘ARCH_MOUVEMNT’
Création d’alias pour éviter d'écrire le nom des tables en entier.
A pour Dbo.MATERIEL
B pour Dbo.MOUVEMNT
Filtres pour les critères suivants
SITE = EXT et FIN
BATIMENT <> EN ATTENTE et A GERER
DATE_INVENTAIRE <> ce jour moins 365 jours-----------------------------------------------------------------*/
insert into E_ARCH_MOUVEMNT
select *
From MOUVEMNT
where CLE_MATERIEL in (select distinct a.CLE_MATERIEL
from MATERIEL a LEFT OUTER JOIN
MOUVEMNT b ON a.CLE_MATERIEL = a.CLE_MATERIEL
WHERE a.DATE_INVENTAIRE <DATEADD(Day, -
365,CURRENT_TIMESTAMP)
AND a.SITE IN ('EXT', 'FIN')
and a.BATIMENT NOT IN ('EN ATTENTE', 'A GERER'))
Merci de votre aide.
Désolé j'avais oublier le code réalisé, le voici:
BEGIN TRAN
insert into E_ARCH_MOUVEMNT
select *
From MOUVEMNT
where CLE_MATERIEL in (select distinct a.CLE_MATERIEL
from MATERIEL a LEFT OUTER JOIN
MOUVEMNT b ON a.CLE_MATERIEL = a.CLE_MATERIEL
WHERE a.DATE_INVENTAIRE <DATEADD(Day, -
365,CURRENT_TIMESTAMP)
AND a.SITE IN ('EXT', 'FIN')
and a.BATIMENT NOT IN ('EN ATTENTE', 'A GERER'))
if @@error<>0
ROLLBACK TRAN
COMMIT TRAN
Bonjour et merçi pour cette réponse. Parcontre j'ai besoin d'un complément
d'information.
J'ai intégré ce code à ma requête, de la maniére suivante et je n'ai pas de
message d'erreur.Cela semble fonctionner
Je suis surpris que cela fonctionne du premier coup.
Pouvez vous m'indiquer si la réquête est elle bien construite.
y a t il un moyen de créer une erreur pour valider que j'ai bien construit
cette requête.
L'ensemble BEGIN TRAN et COMMIT TRAN peut t'il englober l'ensemble de la
requêt ou est il préferable de travailler par bloque
exemple:
BEGIN TRAN "requêt insert" COMMIT TRAN et BEGIN TRAN "requête delete" COMMIT
TRAN
"jgabillaud" a écrit :
Bonjour,
Par d'afaut pour SQL Server chaque instruction représente une transaction.
Pour gérer plus finement une transaction, il faut la démarrer de manière
explicite par BEGIN TRAN
Puis la terminer en succès par COMMIT TRAN
Après chaque insertion il est possible de tester la présence ou non d'une
erreur(if @@error<>0) et d'annuler la TOTALITE de la transaction par
ROLLBACK TRAN
Bon courage
"Richard" a écrit :
Bonjour.
j'ai réalisé grace à votre aide 2 requêtes ( insertion de lignes dans une
table de sauvegarde et destruction des lignes copiées dans la table
d'origine ).
Dans ma demande d'aide pour réalisation de ces requétes il est dit de gerer
une transaction pour étre sur d'avoir un résultat cohérent à la fin du proces.
OK pour ça, j'ai donc regardé le sujet sur "devellopez. com" et comme je ne
connais rien au sujet , je n'arrive pas à comprendre la démarche et comment
réaliser ce code.
Donc encore une fois je fais appel à vous pour contruire et m'expliquer les
manip. à suivre.
Le but final et de faire un ensemble des requêtes pour 20 tables que je
souhaite archiver
Voici un bout de la requête que je souhaite intéger à une transaction
/*----------------------------------------------------------------
Copier les données de la table ‘MOUVMNT’ dans ‘ARCH_MOUVEMNT’
Création d’alias pour éviter d'écrire le nom des tables en entier.
A pour Dbo.MATERIEL
B pour Dbo.MOUVEMNT
Filtres pour les critères suivants
SITE = EXT et FIN
BATIMENT <> EN ATTENTE et A GERER
DATE_INVENTAIRE <> ce jour moins 365 jours
-----------------------------------------------------------------*/
insert into E_ARCH_MOUVEMNT
select *
From MOUVEMNT
where CLE_MATERIEL in (select distinct a.CLE_MATERIEL
from MATERIEL a LEFT OUTER JOIN
MOUVEMNT b ON a.CLE_MATERIEL = a.CLE_MATERIEL
WHERE a.DATE_INVENTAIRE <DATEADD(Day, -
365,CURRENT_TIMESTAMP)
AND a.SITE IN ('EXT', 'FIN')
and a.BATIMENT NOT IN ('EN ATTENTE', 'A GERER'))
Merci de votre aide.
Désolé j'avais oublier le code réalisé, le voici:
BEGIN TRAN
insert into E_ARCH_MOUVEMNT
select *
From MOUVEMNT
where CLE_MATERIEL in (select distinct a.CLE_MATERIEL
from MATERIEL a LEFT OUTER JOIN
MOUVEMNT b ON a.CLE_MATERIEL = a.CLE_MATERIEL
WHERE a.DATE_INVENTAIRE <DATEADD(Day, -
365,CURRENT_TIMESTAMP)
AND a.SITE IN ('EXT', 'FIN')
and a.BATIMENT NOT IN ('EN ATTENTE', 'A GERER'))
if @@error<>0
ROLLBACK TRAN
COMMIT TRAN
Bonjour et merçi pour cette réponse. Parcontre j'ai besoin d'un complément
d'information.
J'ai intégré ce code à ma requête, de la maniére suivante et je n'ai pas de
message d'erreur.Cela semble fonctionner
Je suis surpris que cela fonctionne du premier coup.
Pouvez vous m'indiquer si la réquête est elle bien construite.
y a t il un moyen de créer une erreur pour valider que j'ai bien construit
cette requête.
L'ensemble BEGIN TRAN et COMMIT TRAN peut t'il englober l'ensemble de la
requêt ou est il préferable de travailler par bloque
exemple:
BEGIN TRAN "requêt insert" COMMIT TRAN et BEGIN TRAN "requête delete" COMMIT
TRAN
"jgabillaud" a écrit :Bonjour,
Par d'afaut pour SQL Server chaque instruction représente une transaction.
Pour gérer plus finement une transaction, il faut la démarrer de manière
explicite par BEGIN TRAN
Puis la terminer en succès par COMMIT TRAN
Après chaque insertion il est possible de tester la présence ou non d'une
erreur(if @@error<>0) et d'annuler la TOTALITE de la transaction par
ROLLBACK TRAN
Bon courage
"Richard" a écrit :Bonjour.
j'ai réalisé grace à votre aide 2 requêtes ( insertion de lignes dans une
table de sauvegarde et destruction des lignes copiées dans la table
d'origine ).
Dans ma demande d'aide pour réalisation de ces requétes il est dit de gerer
une transaction pour étre sur d'avoir un résultat cohérent à la fin du proces.
OK pour ça, j'ai donc regardé le sujet sur "devellopez. com" et comme je ne
connais rien au sujet , je n'arrive pas à comprendre la démarche et comment
réaliser ce code.
Donc encore une fois je fais appel à vous pour contruire et m'expliquer les
manip. à suivre.
Le but final et de faire un ensemble des requêtes pour 20 tables que je
souhaite archiver
Voici un bout de la requête que je souhaite intéger à une transaction
/*----------------------------------------------------------------
Copier les données de la table ‘MOUVMNT’ dans ‘ARCH_MOUVEMNT’
Création d’alias pour éviter d'écrire le nom des tables en entier.
A pour Dbo.MATERIEL
B pour Dbo.MOUVEMNT
Filtres pour les critères suivants
SITE = EXT et FIN
BATIMENT <> EN ATTENTE et A GERER
DATE_INVENTAIRE <> ce jour moins 365 jours-----------------------------------------------------------------*/
insert into E_ARCH_MOUVEMNT
select *
From MOUVEMNT
where CLE_MATERIEL in (select distinct a.CLE_MATERIEL
from MATERIEL a LEFT OUTER JOIN
MOUVEMNT b ON a.CLE_MATERIEL = a.CLE_MATERIEL
WHERE a.DATE_INVENTAIRE <DATEADD(Day, -
365,CURRENT_TIMESTAMP)
AND a.SITE IN ('EXT', 'FIN')
and a.BATIMENT NOT IN ('EN ATTENTE', 'A GERER'))
Merci de votre aide.