Bonjour tout le monde,

Je suis en train de développer un programme (étonnant non ? ) et j'ai fait une procédure qui fait elle même appel à d'autres procédures pour faire des insert en "rafale" surr plusieurs tables.

Extrait :

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
Dim myTransac As SqlTransaction
        myTransac = cnx.BeginTransaction
        cmd.Transaction = myTransac
 
        Try
            cmd.ExecuteNonQuery()
 
            'Si l'insertion du nouveau rapport est effectuée avec succès, on insère tout les lots
            LigneLot.insert(insertReussi, newRapport.ListeLot, newRapport.Id, cnx, myTransac)
 
            'Si les lots sont insérés avec succès, on insère les pertes
            EntetePerte.insert(insertReussi, newRapport.ListePerte, newRapport.Id, cnx, myTransac)
 
            'Si les pertes sont insérées avec succès, on commit la transaction, sinon on rollback
            myTransac.Commit()
        Catch
            insertReussi = False
            myTransac.Rollback()
        End Try
        cnx.Close()
Donc j'envoie aux procédures "filles" les paramètres dont elles ont besoins (connexion et transaction comprises) avec des try sur toutes les procédures impliquées.
Donc ma question est : Si une des ces procédures lève une exception, est ce que je vais bien revenir dans le try/catch d'origine ? Et donc est ce que le commit/rollback est utilisé à bon escient ici ?