Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Impara Atomicità | Acid
Tecniche Avanzate in SQL

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.

Elaborazione delle transazioni in SQL

Caratteristiche principali

  • Rollback: Se una qualsiasi 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 un'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;

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

Consideriamo ora uno scenario in cui si desidera creare un nuovo conto bancario e contemporaneamente generare una voce di log per segnalare 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. Ecco un esempio molto semplice di come potremmo realizzare ciò tramite una transazione:

-- 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;

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

Suggested prompts:

Can you explain what would happen if one of the INSERT statements failed?

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.35

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.

Elaborazione delle transazioni in SQL

Caratteristiche principali

  • Rollback: Se una qualsiasi 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 un'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;

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

Consideriamo ora uno scenario in cui si desidera creare un nuovo conto bancario e contemporaneamente generare una voce di log per segnalare 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. Ecco un esempio molto semplice di come potremmo realizzare ciò tramite una transazione:

-- 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;

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