Bonjour, je n'arrive pas a faire fonctionner une transaction, si j'ai bien compris les transactions servent a ne pas insérer les données si une requette retourne une erreur. voici mon code :
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
21
22
23
24
25
26
27
28
29
30
31
32
33
def addPal(self,idCoul,pds,no,dateFab,com,conf,idCmd=None):	
 
    QSqlDatabase.database().transaction()
    query = QSqlQuery()	
    query.prepare("INSERT INTO bscPal \
        (couleurPal,pdsPal,noPal,dateFabPal,comPal,conformePal) \
        VALUES (?,?,?,?,?,?)")
    query.addBindValue(idCoul)
    query.addBindValue(pds)
    query.addBindValue(no)
    query.addBindValue(dateFab)
    query.addBindValue(com)
    query.addBindValue(conf)
 
    if not query.exec_():
        print(query.lastError().text())
 
    if idCmd:
        idPal = query.lastInsertId()
        query.prepare("INSERT INTO linkCmdPal \
            (idCmdLink,idPalLink) VALUES (?,?)")
        query.addBindValue(idCmd)
        query.addBindValue(idPal)
        if not query.exec_():
            print(query.lastError().text())
 
    if QSqlDatabase.database().commit():
        print("ok")
        return True
    else:
        print("error")
        print(QSqlDatabase.database().lastError().text())
        return False
la première requette insère une palette en stock, la seconde l'ajoute a une commande. si je rajoute un "?" a la seconde requette pour provoquer une erreur, la palette est quand même inséré et le commit retourne True

quel est la bonne méthode ?