L'instruction `COMMIT` dans MySQL est utilisée pour sauvegarder de façon permanente tous les changements effectués pendant la transaction en cours. Il finalise la transaction, rendant toutes les modifications accessibles aux autres utilisateurs et sessions.
Utilisation
L'instruction `COMMIT` est typiquement utilisée après une série d'opérations `INSERT`, `UPDATE`, ou `DELETE` pour s'assurer que les changements sont sauvegardés dans la base de données. Elle est essentielle dans la gestion des transactions pour garantir l'intégrité des données.
Cette syntaxe confirme que toutes les modifications de la transaction en cours sont enregistrées et ne peuvent pas être annulées. Notez que `COMMIT` n'est applicable que dans les moteurs de stockage qui supportent les transactions, comme InnoDB. Elle n'est pas applicable aux moteurs de stockage non transactionnels tels que MyISAM.
Exemples
1. Transaction de base (Basic Transaction Commit)
STARTTRANSACTION;INSERTINTOaccounts(name, balance)VALUES('John Doe',1000);COMMIT;Propulsé par
Dans cet exemple, un nouveau compte est ajouté, et le changement est sauvegardé en utilisant `COMMIT` pour finaliser la transaction.
2. Validation de plusieurs modifications
STARTTRANSACTION;UPDATE accounts SET balance = balance -100WHERE name ='John Doe';UPDATE accounts SET balance = balance +100WHERE name ='Jane Smith';COMMIT;Propulsé par
Cet exemple transfère des fonds entre deux comptes. Les deux mises à jour sont finalisées ensemble avec un seul `COMMIT`, assurant l'atomicité.
3. Commit conditionnel avec gestion des erreurs
Pour gérer les validations conditionnelles et la détection des erreurs, utilisez la logique d'application ou les procédures stockées. Les instructions `IF` directes dans les scripts SQL ne sont pas prises en charge. Voici un exemple utilisant une procédure stockée :
DELIMITER//CREATEPROCEDUREConditionalCommit()BEGINDECLARE order_exists INT;STARTTRANSACTION;DELETEFROM orders WHERE order_id =101;SELECTCOUNT(*)INTO order_exists FROM orders WHERE order_id =101;IF order_exists =0THENCOMMIT;ELSEROLLBACK;ENDIF;END//DELIMITER;Propulsé par
Dans cet exemple, une procédure vérifie si la suppression de l'ordre est réussie avant de s'engager.
Conseils et bonnes pratiques
Associez-le à `START TRANSACTION`. Utilisez `COMMIT` avec `START TRANSACTION` pour vous assurer que les changements font partie d'une transaction.
Gérer les erreurs avec `ROLLBACK`. En cas d'erreur, annulez les modifications avant de les valider.
Veillez à la cohérence des transactions et effectuez toutes les opérations nécessaires au sein d'une transaction avant de l'engager.
Minimisez la durée des transactions afin de réduire le verrouillage et d'améliorer les performances.
Testez avant de vous engager pour vérifier que toutes les modifications répondent à vos exigences.
Note complémentaire
L'émission d'un `COMMIT` sans un `START TRANSACTION` précédent n'a pas d'effet, car il n'y a pas de changements à finaliser. Veillez toujours à ce que l'option `START TRANSACTION` soit utilisée pour initier une transaction.
L'instruction `COMMIT` dans MySQL est utilisée pour sauvegarder de façon permanente tous les changements effectués pendant la transaction en cours. Il finalise la transaction, rendant toutes les modifications accessibles aux autres utilisateurs et sessions.
Utilisation
L'instruction `COMMIT` est typiquement utilisée après une série d'opérations `INSERT`, `UPDATE`, ou `DELETE` pour s'assurer que les changements sont sauvegardés dans la base de données. Elle est essentielle dans la gestion des transactions pour garantir l'intégrité des données.
Cette syntaxe confirme que toutes les modifications de la transaction en cours sont enregistrées et ne peuvent pas être annulées. Notez que `COMMIT` n'est applicable que dans les moteurs de stockage qui supportent les transactions, comme InnoDB. Elle n'est pas applicable aux moteurs de stockage non transactionnels tels que MyISAM.
Exemples
1. Transaction de base (Basic Transaction Commit)
Dans cet exemple, un nouveau compte est ajouté, et le changement est sauvegardé en utilisant `COMMIT` pour finaliser la transaction.
2. Validation de plusieurs modifications
Cet exemple transfère des fonds entre deux comptes. Les deux mises à jour sont finalisées ensemble avec un seul `COMMIT`, assurant l'atomicité.
3. Commit conditionnel avec gestion des erreurs
Pour gérer les validations conditionnelles et la détection des erreurs, utilisez la logique d'application ou les procédures stockées. Les instructions `IF` directes dans les scripts SQL ne sont pas prises en charge. Voici un exemple utilisant une procédure stockée :
Dans cet exemple, une procédure vérifie si la suppression de l'ordre est réussie avant de s'engager.
Conseils et bonnes pratiques
Note complémentaire
L'émission d'un `COMMIT` sans un `START TRANSACTION` précédent n'a pas d'effet, car il n'y a pas de changements à finaliser. Veillez toujours à ce que l'option `START TRANSACTION` soit utilisée pour initier une transaction.