English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
TRANSACTION (transaction) est une unité logique du processus d'exécution du système de gestion de base de données, composée d'une séquence limitée d'opérations de base de données.
Les transactions de base de données contiennent généralement une séquence de lectures sur la base de données/Opérations d'écriture. Ils incluent les deux objectifs suivants :
Fournit une méthode de récupération à partir d'une séquence d'opérations de base de données en cas de défaillance, tout en fournissant une méthode pour que la base de données conserve une cohérence même en cas de situation anormale.
Lorsque plusieurs applications accèdent à la base de données en parallèle, une méthode d'isolement peut être fournie entre ces applications pour éviter que leurs opérations ne se perturbent mutuellement.
Lorsque la transaction est soumise au système de gestion de base de données (DBMS), le DBMS doit assurer que toutes les opérations de la transaction sont achevées avec succès et que leurs résultats sont conservés de manière permanente dans la base de données. Si certaines opérations de la transaction ne sont pas achevées avec succès, toutes les opérations de la transaction doivent être annulées, revenir à l'état avant l'exécution de la transaction ; en même temps, la transaction n'affecte pas l'exécution de la base de données ou d'autres transactions, et toutes les transactions semblent s'exécuter de manière indépendante.
Les transactions ont les quatre propriétés standard suivantes, généralement abrégées en ACID :
Atomicité : Une transaction est exécutée en tant qu'ensemble, et les opérations sur la base de données incluses doivent être exécutées soit toutes, soit aucune.
Consistance : Une transaction doit assurer que l'état de la base de données passe d'un état cohérent à un autre état cohérent. Un état cohérent signifie que les données dans la base de données doivent satisfaire aux contraintes d'intégrité.
Isolation : Lorsque plusieurs transactions s'exécutent en parallèle, l'exécution d'une transaction ne doit pas affecter l'exécution d'une autre transaction.
Persistance (Durabilité) : Les modifications apportées par une transaction confirmée doivent être conservées de manière permanente dans la base de données.
Quelqu'un doit utiliser l'électronique monétaire pour acheter dans le magasin10Les choses de 0 yuan, au moins comprises deux opérations :
Réduction du compte de la personne 100 yuan.
Augmentation du compte du magasin100 yuan.
Un système de gestion de base de données qui prend en charge les transactions doit assurer que les deux opérations ci-dessus (l'ensemble de la "transaction") peuvent être achevées ou annulées ensemble, sinon il会出现 10Disparition ou apparition soudaine de 0 yuan.
Utilisez les commandes suivantes pour contrôler les transactions :
BEGIN TRANSACTION:Démarrage d'une transaction.
COMMIT:Confirmation de la transaction, ou vous pouvez utiliser la commande END TRANSACTION.
ROLLBACK:Annulation de la transaction.
Les commandes de contrôle des transactions ne peuvent être utilisées qu'avec INSERT, UPDATE et DELETE. Ils ne peuvent pas être utilisés lors de la création ou de la suppression de tables, car ces opérations sont automatiquement confirmées dans la base de données.
Les transactions peuvent être démarrées à l'aide de la commande BEGIN TRANSACTION ou de la commande BEGIN simple. Ces types de transactions se poursuivent généralement jusqu'à ce qu'elles rencontrent une commande COMMIT ou ROLLBACK suivante. Cependant, lors de la fermeture de la base de données ou en cas d'erreur, le traitement des transactions est également annulé. Voici la syntaxe simple pour démarrer une transaction :
BEGIN; ou BEGIN TRANSACTION;
La commande COMMIT est utilisée pour sauvegarder les modifications appelées par la transaction dans la base de données, c'est-à-dire pour confirmer la transaction.
La syntaxe de la commande COMMIT est la suivante :
COMMIT; ou END TRANSACTION;
La commande ROLLBACK est utilisée pour annuler les commandes de transaction non sauvegardées dans la base de données, c'est-à-dire pour faire un rollback de la transaction.
La syntaxe de la commande ROLLBACK est la suivante :
ROLLBACK;
Créer la table COMPANY (Télécharger le fichier SQL COMPANY ),le contenu des données est le suivant :
w3codeboxdb# select * from COMPANY; id | name | age | address | salary ----+-------+-----+-----------+-------- 1 | Paul | 32 | California| 20000 2 | Allen | 25 | Texas | 15000 3 | Teddy | 23 | Norway | 20000 4 | Mark | 25 | Rich-Mond | 65000 5 | David | 27 | Texas | 85000 6 | Kim | 22 | South-Hall| 45000 7 | James | 24 | Houston | 10000 (7 rows)
Maintenant, commençons une transaction et supprimons age = de la table. 25 enregistrements, enfin, nous utilisons la commande ROLLBACK pour annuler toutes les modifications.
w3codeboxdb=# BEGIN; DELETE FROM COMPANY WHERE AGE = 25; ROLLBACK;
Vérifiez la table COMPANY, les enregistrements suivants restent :
id | name | age | address | salary ----+-------+-----+-----------+-------- 1 | Paul | 32 | California| 20000 2 | Allen | 25 | Texas | 15000 3 | Teddy | 23 | Norway | 20000 4 | Mark | 25 | Rich-Mond | 65000 5 | David | 27 | Texas | 85000 6 | Kim | 22 | South-Hall| 45000 7 | James | 24 | Houston | 10000
Maintenant, commençons une autre transaction et supprimons age = de la table. 25 enregistrements, enfin, nous utilisons la commande COMMIT pour soumettre toutes les modifications.
w3codeboxdb=# BEGIN; DELETE FROM COMPANY WHERE AGE = 25; COMMIT;
Vérifiez la table COMPANY, l'enregistrement a été supprimé :
id | name | age | address | salary ----+-------+-----+------------+-------- 1 | Paul | 32 | California | 20000 3 | Teddy | 23 | Norway | 20000 5 | David | 27 | Texas | 85000 6 | Kim | 22 | South-Hall | 45000 7 | James | 24 | Houston | 10000 (5 rows)