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

Polack77 1100 Messages postés mercredi 22 mars 2006Date d'inscription 15 avril 2018 Dernière intervention - 31 août 2006 à 09:52 - Dernière réponse : cs_Malkuth 278 Messages postés samedi 22 février 2003Date d'inscription 24 avril 2013 Dernière intervention
- 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 

4 réponses

Répondre au sujet
cs_skweeky 261 Messages postés mercredi 3 mai 2006Date d'inscription 11 janvier 2010 Dernière intervention - 31 août 2006 à 10:44
+3
Utile
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
Cette réponse vous a-t-elle aidé ?  
Commenter la réponse de cs_skweeky
Polack77 1100 Messages postés mercredi 22 mars 2006Date d'inscription 15 avril 2018 Dernière intervention - 31 août 2006 à 10:58
0
Utile
<!--[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
cs_Malkuth 278 Messages postés samedi 22 février 2003Date d'inscription 24 avril 2013 Dernière intervention - 1 sept. 2006 à 19:15
0
Utile
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
cs_Malkuth 278 Messages postés samedi 22 février 2003Date d'inscription 24 avril 2013 Dernière intervention - 1 sept. 2006 à 19:16
0
Utile
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.