Junior — Middle
Avez-vous déjà utilisé des transactions imbriquées lors de votre travail avec des bases de données?
sobes.tech IA
Réponse de l'IA
Les transactions imbriquées sont la capacité de commencer une autre transaction à l'intérieur d'une transaction, qui peut être validée ou annulée indépendamment. La plupart des SGBD ne prennent pas en charge directement les transactions imbriquées, mais il est possible d'utiliser des points de sauvegarde (savepoints).
En Go, lors de la manipulation de bases de données via le package database/sql, on peut utiliser des savepoints pour simuler des transactions imbriquées :
// Commencer la transaction principale
tx, err := db.Begin()
if err != nil {
// gestion de l'erreur
}
// Créer un point de sauvegarde
_, err = tx.Exec("SAVEPOINT sp1")
if err != nil {
// gestion de l'erreur
}
// Effectuer des opérations
// ...
// En cas d'erreur, revenir au point de sauvegarde
_, err = tx.Exec("ROLLBACK TO SAVEPOINT sp1")
// À la fin, valider la transaction principale
err = tx.Commit()
Ainsi, il est possible de contrôler des parties de la transaction sans annuler toute l'opération.