Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Impara Atomicità | Acid
Practice
Projects
Quizzes & Challenges
Quizzes
Challenges
/
Ottimizzazione SQL e Funzionalità delle Query

bookAtomicità

Atomicità in SQL si riferisce a una delle proprietà ACID, che garantisce l'utilizzo delle transazioni durante l'interrogazione dei dati tramite SQL.
Nel contesto dei database SQL, l'atomicità assicura che tutte le operazioni all'interno di una specifica unità logica vengano completate, oppure nessuna di esse lo sia.

Elaborazione delle transazioni in SQL

Caratteristiche principali

  • Rollback: se una parte fallisce (ad esempio, a causa di un errore o di una violazione di vincolo), l'intera transazione viene annullata, ripristinando le modifiche;

  • Commit: se tutte le operazioni hanno successo, la transazione viene confermata, rendendo permanenti le modifiche.

Creazione di transazioni in SQL

In SQL, ogni istruzione individuale è considerata una transazione.
Tuttavia, è possibile creare manualmente transazioni che contengono più di una istruzione.

Immaginiamo uno scenario in cui abbiamo due tabelle:

  • la tabella BankAccounts, che include le seguenti colonne: account_number (Primary Key), account_holder e balance;

  • tabella UserLogs con colonne: account_number, action, timestamp ecc. La combinazione di account_number e timestamp costituisce una chiave primaria composta di questa relazione.

Nei prossimi esempi di codice, vedrai come i dati vengono inseriti e gestiti in queste tabelle, dimostrando operazioni atomiche utilizzando voci reali dallo schema fornito.

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

Consideriamo ora uno scenario in cui si desidera creare un nuovo conto bancario e contemporaneamente generare una voce di log per indicare l'aggiunta del nuovo conto.
È fondamentale che queste due azioni, aggiunta del conto e registrazione dell'evento, siano trattate come un'unica unità logica e vengano incluse in un'unica transazione. Di seguito è riportato un esempio molto semplice di come si potrebbe realizzare ciò tramite una transazione:

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

Nella query sopra, utilizziamo il blocco BEGIN per indicare che tutte le istruzioni successive devono essere considerate come un'unica unità: se una di esse non viene eseguita, nessuna delle istruzioni deve essere eseguita.
La parola chiave COMMIT indica la fine del blocco di transazione.

question mark

Cosa garantisce il concetto di atomicità nel contesto delle transazioni di database?

Select the correct answer

Tutto è chiaro?

Come possiamo migliorarlo?

Grazie per i tuoi commenti!

Sezione 1. Capitolo 3

Chieda ad AI

expand

Chieda ad AI

ChatGPT

Chieda pure quello che desidera o provi una delle domande suggerite per iniziare la nostra conversazione

bookAtomicità

Scorri per mostrare il menu

Atomicità in SQL si riferisce a una delle proprietà ACID, che garantisce l'utilizzo delle transazioni durante l'interrogazione dei dati tramite SQL.
Nel contesto dei database SQL, l'atomicità assicura che tutte le operazioni all'interno di una specifica unità logica vengano completate, oppure nessuna di esse lo sia.

Elaborazione delle transazioni in SQL

Caratteristiche principali

  • Rollback: se una parte fallisce (ad esempio, a causa di un errore o di una violazione di vincolo), l'intera transazione viene annullata, ripristinando le modifiche;

  • Commit: se tutte le operazioni hanno successo, la transazione viene confermata, rendendo permanenti le modifiche.

Creazione di transazioni in SQL

In SQL, ogni istruzione individuale è considerata una transazione.
Tuttavia, è possibile creare manualmente transazioni che contengono più di una istruzione.

Immaginiamo uno scenario in cui abbiamo due tabelle:

  • la tabella BankAccounts, che include le seguenti colonne: account_number (Primary Key), account_holder e balance;

  • tabella UserLogs con colonne: account_number, action, timestamp ecc. La combinazione di account_number e timestamp costituisce una chiave primaria composta di questa relazione.

Nei prossimi esempi di codice, vedrai come i dati vengono inseriti e gestiti in queste tabelle, dimostrando operazioni atomiche utilizzando voci reali dallo schema fornito.

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

Consideriamo ora uno scenario in cui si desidera creare un nuovo conto bancario e contemporaneamente generare una voce di log per indicare l'aggiunta del nuovo conto.
È fondamentale che queste due azioni, aggiunta del conto e registrazione dell'evento, siano trattate come un'unica unità logica e vengano incluse in un'unica transazione. Di seguito è riportato un esempio molto semplice di come si potrebbe realizzare ciò tramite una transazione:

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

Nella query sopra, utilizziamo il blocco BEGIN per indicare che tutte le istruzioni successive devono essere considerate come un'unica unità: se una di esse non viene eseguita, nessuna delle istruzioni deve essere eseguita.
La parola chiave COMMIT indica la fine del blocco di transazione.

question mark

Cosa garantisce il concetto di atomicità nel contesto delle transazioni di database?

Select the correct answer

Tutto è chiaro?

Come possiamo migliorarlo?

Grazie per i tuoi commenti!

Sezione 1. Capitolo 3
some-alt