Question bête (c'est quoi un commit?) [Résolu]

Messages postés
1100
Date d'inscription
mercredi 22 mars 2006
Dernière intervention
15 avril 2018
- 31 août 2006 à 09:52 - Dernière réponse :
Messages postés
278
Date d'inscription
samedi 22 février 2003
Dernière intervention
24 avril 2013
- 1 sept. 2006 à 19:16
Avant de me faire traiter de feignait je tien à dire que
j'ai regarder sur le net avant de posée cette question (rapidement c'est vrais
mais j’ai plein de truc à faire et je ne peut pas me permettre d’y passée deux
heures).

J'aurais en faite simplement voulut avoir des précisions et savoir si il y des
"trucs" à savoir pour l'utilisé correctement.

Déjà voila ce que j'ai compris :

    Un commit s'utilise pour versifier l'exécution de requête afin
d'exécuter toute les requête ou aucune, et, cas ce passerais de la façon
suivante :

       Désactivation du commit automatique (à priori
avec un "BEGIN TRANSACTION" mais en fais cette commande c'est quoi?
Une sorte de requête ???)
<!--[if gte vml 1]><v:shapetype
id="_x0000_t75" coordsize="21600,21600" o:spt="75" o:preferrelative="t"
path="m@4@5l@4@11@9@11@9@5xe" filled="f" stroked="f">
<v:stroke joinstyle="miter"/>
<v:formulas>
<v:f eqn="if lineDrawn pixelLineWidth 0"/>
<v:f eqn="sum @0 1 0"/>
<v:f eqn="sum 0 0 @1"/>
<v:f eqn="prod @2 1 2"/>
<v:f eqn="prod @3 21600 pixelWidth"/>
<v:f eqn="prod @3 21600 pixelHeight"/>
<v:f eqn="sum @0 0 1"/>
<v:f eqn="prod @6 1 2"/>
<v:f eqn="prod @7 21600 pixelWidth"/>
<v:f eqn="sum @8 21600 0"/>
<v:f eqn="prod @7 21600 pixelHeight"/>
<v:f eqn="sum @10 21600 0"/>
</v:formulas>
<v:path o:extrusionok="f" gradientshapeok="t" o:connecttype="rect"/>
<o:lock v:ext="edit" aspectratio="t"/>
</v:shapetype><v:shape id="_x0000_i1025" type="#_x0000_t75" alt="" style='width:11.25pt;
height:11.25pt'>
<v:imagedata src="file:///C:\DOCUME~1\VIW\LOCALS~1\Temp\msohtml1\01\clip_image001.gif"
o:href="/imgs2/smile.gif"/>
</v:shape><![endif]--><!--[if !vml]--><!--[endif]-->
       On fais les requête normalement ("INSERT
INTO ..." cas je sais quand même ce que cas veut dire! )

       Effectue une commit ("COMMIT
TRANSACTION" alors si j'ai bien compris on ne fait cas que si on n'a pas
d'erreur durant les "INSERT" ? Mais cette commande aussi je ne sais
pas ce que c'est! )

       En cas d'erreur durant les "INSERT"
on fait ("ROLLBACK TRANSACTION" Donc ca c'est pour annulé tout les
"INSERT" effectuer depuis le dernier commit? Heeee, cas non plus je ne
sais pas si c'est une requête ou autre !)

<!--[if gte vml 1]><v:shape id="_x0000_i1026" type="#_x0000_t75"
alt="" style='width:11.25pt;height:11.25pt'>
<v:imagedata src="file:///C:\DOCUME~1\VIW\LOCALS~1\Temp\msohtml1\01\clip_image002.gif"
o:href="/imgs2/smile_blush.gif"/>
</v:shape><![endif]--><!--[if !vml]--><!--[endif]-->
Bon alors en résumé je crois avoir compris ce que c'est qu'un
"commit" tout du moins en théorie mais je ne sais pas command on s'en
sert en vrais.


Merci d'avance.









Ce soir dans "triste monde tragique" :


Des vers qui mangent les programmeurs !
Des virus sorte des ordinateurs et attaque des gents !
Afficher la suite 

Votre réponse

4 réponses

Meilleure réponse
Messages postés
261
Date d'inscription
mercredi 3 mai 2006
Dernière intervention
11 janvier 2010
- 31 août 2006 à 10:44
3
Merci
Il y a 3 commandes :



<li>BEGIN TRANSACTION</li>
<li>COMMIT TRANSACTION</li>
<li>ROLLBACK TRANSACTION</li>

BEGIN TRANSACTION marque le début d'une transaction... Quand on se trouve dans le cadre d'une transaction, toutes les requêtes de modification (INSERT / DELETE / UPDATE) executées seront toutes refusées ou acceptées en bloc.

Je fais pas exemple ceci :

BEGIN TRANSACTION

INSERT INTO TableA (ChampA)
VALUES (1)

UPDATE TableB
SET ChampB = 7

DELETE FROM TableC
WHERE Id = 89

COMMIT TRANSACTION

Toutes les requêtes entre BEGIN TRAN et COMMIT TRAN sont validées. Si par contre je remplace COMMIT par ROLLBACK, toutes les modifications seront annulées.

Le principe de la transaction c'est tout ou rien... soit tout passe (COMMIT) soit rien (ROLLBACK).

Christian Robert - Winwise
http://blogs.developpeur.org/christian/
MCT - Database Development / Database Administration

Merci cs_skweeky 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 90 internautes ce mois-ci

Commenter la réponse de cs_skweeky
Messages postés
1100
Date d'inscription
mercredi 22 mars 2006
Dernière intervention
15 avril 2018
- 31 août 2006 à 10:58
0
Merci
<!--[if gte vml 1]><v:shapetype
id="_x0000_t75" coordsize="21600,21600" o:spt="75" o:preferrelative="t"
path="m@4@5l@4@11@9@11@9@5xe" filled="f" stroked="f">
<v:stroke joinstyle="miter"/>
<v:formulas>
<v:f eqn="if lineDrawn pixelLineWidth 0"/>
<v:f eqn="sum @0 1 0"/>
<v:f eqn="sum 0 0 @1"/>
<v:f eqn="prod @2 1 2"/>
<v:f eqn="prod @3 21600 pixelWidth"/>
<v:f eqn="prod @3 21600 pixelHeight"/>
<v:f eqn="sum @0 0 1"/>
<v:f eqn="prod @6 1 2"/>
<v:f eqn="prod @7 21600 pixelWidth"/>
<v:f eqn="sum @8 21600 0"/>
<v:f eqn="prod @7 21600 pixelHeight"/>
<v:f eqn="sum @10 21600 0"/>
</v:formulas>
<v:path o:extrusionok="f" gradientshapeok="t" o:connecttype="rect"/>
<o:lock v:ext="edit" aspectratio="t"/>
</v:shapetype><v:shape id="_x0000_i1026" type="#_x0000_t75" alt="" style='width:11.25pt;
height:11.25pt'>
<v:imagedata src="file:///C:\DOCUME~1\VIW\LOCALS~1\Temp\msohtml1\01\clip_image001.gif"
o:href="/imgs2/smile_blush.gif"/>
</v:shape><![endif]-->
<!--[if !vml]-->
<!--[endif]-->    Donc si j'ai bien compris "BEGIN TRANSACTION",
"COMMIT TRANSACTION", "ROLLBACK TRANSACTION" sont des
commandes (je ne sais pas si c'est comme cas qu'on dit<!--[if gte vml 1]><v:shape
id="_x0000_i1025" type="#_x0000_t75" alt="" style='width:11.25pt;height:11.25pt'>
<v:imagedata src="file:///C:\DOCUME~1\VIW\LOCALS~1\Temp\msohtml1\01\clip_image001.gif"
o:href="/imgs2/smile_blush.gif"/>
</v:shape><![endif]--><!--[if !vml]--><!--[endif]-->) SQL (soit ~ la même chose qu'une requête).
Mes erreur (en cas d'erreur) me sont quand même remonté au moment des
"INSERT"/"UPDATE"/"DELETE". Donc pour faire une
transaction en bloc (je ne sais pas non plus si c'est comme cas qu'on dit) j'exécute le commande "BEGIN
TRANSACTION" je fais ensuite mes requête ou je vérifie qu’elles ne me
remontent pas d'erreur, et, en cas d'erreur j'exécute "ROLLBACK
TRANSACTION", si non (pas d’erreur) "COMMIT TRANSACTION" pour
valider toutes mes requête.
    Dite moi si je me trompe.


Merci bien.


CodeS-SourceS c'est vraiment vachement bien (tout langage
confondu)

Vive cette communauté!!!







Ce soir dans "triste monde tragique" :


Des vers qui mangent les programmeurs !
Des virus sorte des ordinateurs et attaque des gents !
Commenter la réponse de Polack77
Messages postés
278
Date d'inscription
samedi 22 février 2003
Dernière intervention
24 avril 2013
- 1 sept. 2006 à 19:15
0
Merci
C'est ca effectivememt

pour capturer les erreurs tu peux faire un truc de se genre :
--Début de la transaction
 BEGIN TRANSACTION
--Capture des erreurs
 BEGIN TRY
   --ICI tu fais tes requettes
   ..........................
   ..........................
   --Validation de la tranxsaction
  COMMIT TRANSACTION
--Fin du block de capture d'erreur
END TRY
--Gestion des erreurs
BEGIN CATCH
   --Annulation de la transaction
  ROLLBACK TRANSACTION
   --la je sauveguarde les informations d'érreur dans une table
  INSERT INTO Erreurs
   (ERROR_NUMBER,
   ERROR_SEVERITY,
   ERROR_STATE,
   ERROR_PROCEDURE,
   ERROR_LINE,
   ERROR_MESSAGE)
  VALUES
   (ERROR_NUMBER(),
   ERROR_SEVERITY(),
   ERROR_STATE(),
   ERROR_PROCEDURE(),
   ERROR_LINE(),
   ERROR_MESSAGE())
--Fin du block de gestion d'erreur
 END CATCH

Il y'a beaucoup a dire sur les transaction je te conseille de te familiarisé avec et d'aller voir sur MSDN pour plus d'infos
Commenter la réponse de cs_Malkuth
Messages postés
278
Date d'inscription
samedi 22 février 2003
Dernière intervention
24 avril 2013
- 1 sept. 2006 à 19:16
0
Merci
PS SQL serveur 2005 uniquement pour le code Précédent
Commenter la réponse de cs_Malkuth

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.