Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Apprendre Atomicité | Acid
Quizzes & Challenges
Quizzes
Challenges
/
Optimisation SQL et Fonctionnalités de Requête

bookAtomicité

Atomicité en SQL fait référence à l'une des propriétés ACID, qui garantit l'utilisation des transactions lors de l'interrogation des données avec SQL.
Dans le contexte des bases de données SQL, l'atomicité assure que toutes les opérations d'une unité logique particulière sont réalisées, ou aucune d'entre elles ne l'est.

Traitement des transactions en SQL

Caractéristiques principales

  • Rollback : si une partie échoue (par exemple, en raison d'une erreur ou d'une violation de contrainte), l'ensemble de la transaction est annulé et les modifications sont rétablies ;

  • Commit : si toutes les opérations réussissent, la transaction est validée et les modifications deviennent permanentes.

Création de transactions en SQL

En SQL, chaque instruction individuelle est considérée comme une transaction.
Cependant, il est possible de créer manuellement des transactions contenant plusieurs instructions.

Imaginons un scénario avec deux tables :

  • la table BankAccounts, qui comprend les colonnes suivantes : account_number (Primary Key), account_holder et balance;

  • la table UserLogs avec les colonnes : account_number, action, timestamp, etc. La combinaison de account_number et timestamp constitue une clé primaire composite de cette relation.

Dans les exemples de code suivants, vous verrez comment les données sont insérées et gérées dans ces tables, illustrant des opérations atomiques à l'aide d'entrées réelles issues du schéma fourni.

12
SELECT * FROM BankAccounts;
copy
12
SELECT * FROM UserLogs;
copy

Considérons maintenant un scénario dans lequel il est prévu de créer un nouveau compte bancaire et, simultanément, de générer une entrée de journal pour signaler l’ajout du nouveau compte.
Il est essentiel que ces deux actions, l’ajout du compte et l’enregistrement de l’événement, soient traitées comme une seule unité logique et doivent être encapsulées dans une seule transaction. Voici un exemple très basique de la manière dont cela peut être réalisé avec une transaction :

123456789101112131415161718
-- Begin the transaction BEGIN; -- Insert a new bank account with account number 109, account holder Emma Watson, and initial balance of 0 INSERT INTO BankAccounts (account_number, account_holder, balance) VALUES (109, 'Emma Watson', 0); -- Step 2: Add log entry if the account was added -- Insert a log entry into the UserLogs table indicating that a new account was added with account number 109 INSERT INTO UserLogs (account_number, action) VALUES (109, 'New account added'); -- Commit the transaction, making the changes permanent COMMIT; -- Check the result SELECT * FROM BankAccounts; SELECT * FROM UserLogs;
copy

Dans la requête ci-dessus, le bloc BEGIN est utilisé pour indiquer que toutes les instructions suivantes doivent être considérées comme une seule unité - si l'une d'elles n'est pas exécutée, aucune des instructions ne doit être exécutée.
Le mot-clé COMMIT indique la fin du bloc de transaction.

question mark

Que garantit le concept d’atomicité dans le contexte des transactions de base de données ?

Select the correct answer

Tout était clair ?

Comment pouvons-nous l'améliorer ?

Merci pour vos commentaires !

Section 1. Chapitre 3

Demandez à l'IA

expand

Demandez à l'IA

ChatGPT

Posez n'importe quelle question ou essayez l'une des questions suggérées pour commencer notre discussion

Suggested prompts:

Can you explain what would happen if one of the statements in the transaction fails?

How does rollback work in this scenario?

Can you show an example where the transaction fails and is rolled back?

Awesome!

Completion rate improved to 4.55

bookAtomicité

Glissez pour afficher le menu

Atomicité en SQL fait référence à l'une des propriétés ACID, qui garantit l'utilisation des transactions lors de l'interrogation des données avec SQL.
Dans le contexte des bases de données SQL, l'atomicité assure que toutes les opérations d'une unité logique particulière sont réalisées, ou aucune d'entre elles ne l'est.

Traitement des transactions en SQL

Caractéristiques principales

  • Rollback : si une partie échoue (par exemple, en raison d'une erreur ou d'une violation de contrainte), l'ensemble de la transaction est annulé et les modifications sont rétablies ;

  • Commit : si toutes les opérations réussissent, la transaction est validée et les modifications deviennent permanentes.

Création de transactions en SQL

En SQL, chaque instruction individuelle est considérée comme une transaction.
Cependant, il est possible de créer manuellement des transactions contenant plusieurs instructions.

Imaginons un scénario avec deux tables :

  • la table BankAccounts, qui comprend les colonnes suivantes : account_number (Primary Key), account_holder et balance;

  • la table UserLogs avec les colonnes : account_number, action, timestamp, etc. La combinaison de account_number et timestamp constitue une clé primaire composite de cette relation.

Dans les exemples de code suivants, vous verrez comment les données sont insérées et gérées dans ces tables, illustrant des opérations atomiques à l'aide d'entrées réelles issues du schéma fourni.

12
SELECT * FROM BankAccounts;
copy
12
SELECT * FROM UserLogs;
copy

Considérons maintenant un scénario dans lequel il est prévu de créer un nouveau compte bancaire et, simultanément, de générer une entrée de journal pour signaler l’ajout du nouveau compte.
Il est essentiel que ces deux actions, l’ajout du compte et l’enregistrement de l’événement, soient traitées comme une seule unité logique et doivent être encapsulées dans une seule transaction. Voici un exemple très basique de la manière dont cela peut être réalisé avec une transaction :

123456789101112131415161718
-- Begin the transaction BEGIN; -- Insert a new bank account with account number 109, account holder Emma Watson, and initial balance of 0 INSERT INTO BankAccounts (account_number, account_holder, balance) VALUES (109, 'Emma Watson', 0); -- Step 2: Add log entry if the account was added -- Insert a log entry into the UserLogs table indicating that a new account was added with account number 109 INSERT INTO UserLogs (account_number, action) VALUES (109, 'New account added'); -- Commit the transaction, making the changes permanent COMMIT; -- Check the result SELECT * FROM BankAccounts; SELECT * FROM UserLogs;
copy

Dans la requête ci-dessus, le bloc BEGIN est utilisé pour indiquer que toutes les instructions suivantes doivent être considérées comme une seule unité - si l'une d'elles n'est pas exécutée, aucune des instructions ne doit être exécutée.
Le mot-clé COMMIT indique la fin du bloc de transaction.

question mark

Que garantit le concept d’atomicité dans le contexte des transactions de base de données ?

Select the correct answer

Tout était clair ?

Comment pouvons-nous l'améliorer ?

Merci pour vos commentaires !

Section 1. Chapitre 3
some-alt