Atomicità
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_holderebalance; -
tabella
UserLogscon colonne:account_number,action,timestampecc. La combinazione diaccount_numberetimestampcostituisce 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.
12SELECT * FROM BankAccounts;
12SELECT * FROM UserLogs;
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;
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.
Grazie per i tuoi commenti!
Chieda ad AI
Chieda ad AI
Chieda pure quello che desidera o provi una delle domande suggerite per iniziare la nostra conversazione
Fantastico!
Completion tasso migliorato a 4.55
Atomicità
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_holderebalance; -
tabella
UserLogscon colonne:account_number,action,timestampecc. La combinazione diaccount_numberetimestampcostituisce 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.
12SELECT * FROM BankAccounts;
12SELECT * FROM UserLogs;
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;
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.
Grazie per i tuoi commenti!