Atomicidade
Atomicidade em SQL refere-se a uma das propriedades ACID, que garante o uso de transações ao consultar dados utilizando SQL.
No contexto de bancos de dados SQL, a atomicidade assegura que todas as operações dentro de uma unidade lógica específica sejam concluídas, ou nenhuma delas seja.
Processamento de transações em SQL
Características principais
-
Rollback: Se qualquer parte falhar (por exemplo, devido a erro ou violação de restrição), toda a transação é revertida, desfazendo as alterações;
-
Commit: Se todas as operações forem bem-sucedidas, a transação é confirmada, tornando as alterações permanentes.
Criação de transações em SQL
Em SQL, cada instrução individual é considerada uma transação.
No entanto, é possível criar manualmente transações que contenham mais de uma instrução.
Vamos imaginar um cenário com duas tabelas:
-
a tabela
BankAccounts
, que inclui as seguintes colunas:account_number
(Primary Key),account_holder
ebalance
; -
tabela
UserLogs
com colunas:account_number
,action
,timestamp
etc. A combinação deaccount_number
etimestamp
é uma chave primária composta dessa relação.
Agora, considere um cenário em que se pretende criar uma nova conta bancária e, simultaneamente, gerar um registro de log para indicar a adição da nova conta.
É fundamental que essas duas ações, adicionar a conta e registrar o evento, sejam tratadas como uma única unidade lógica e estejam envolvidas em uma única transação. Veja um exemplo muito básico de como isso pode ser feito com uma transação:
-- 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;
Na consulta acima, utilizamos o bloco BEGIN
para indicar que todas as instruções seguintes devem ser consideradas como uma única unidade — se uma delas não for executada, nenhuma das instruções deve ser executada.
A palavra-chave COMMIT
indica o fim do bloco de transação.
Obrigado pelo seu feedback!
Pergunte à IA
Pergunte à IA
Pergunte o que quiser ou experimente uma das perguntas sugeridas para iniciar nosso bate-papo
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
Atomicidade
Deslize para mostrar o menu
Atomicidade em SQL refere-se a uma das propriedades ACID, que garante o uso de transações ao consultar dados utilizando SQL.
No contexto de bancos de dados SQL, a atomicidade assegura que todas as operações dentro de uma unidade lógica específica sejam concluídas, ou nenhuma delas seja.
Processamento de transações em SQL
Características principais
-
Rollback: Se qualquer parte falhar (por exemplo, devido a erro ou violação de restrição), toda a transação é revertida, desfazendo as alterações;
-
Commit: Se todas as operações forem bem-sucedidas, a transação é confirmada, tornando as alterações permanentes.
Criação de transações em SQL
Em SQL, cada instrução individual é considerada uma transação.
No entanto, é possível criar manualmente transações que contenham mais de uma instrução.
Vamos imaginar um cenário com duas tabelas:
-
a tabela
BankAccounts
, que inclui as seguintes colunas:account_number
(Primary Key),account_holder
ebalance
; -
tabela
UserLogs
com colunas:account_number
,action
,timestamp
etc. A combinação deaccount_number
etimestamp
é uma chave primária composta dessa relação.
Agora, considere um cenário em que se pretende criar uma nova conta bancária e, simultaneamente, gerar um registro de log para indicar a adição da nova conta.
É fundamental que essas duas ações, adicionar a conta e registrar o evento, sejam tratadas como uma única unidade lógica e estejam envolvidas em uma única transação. Veja um exemplo muito básico de como isso pode ser feito com uma transação:
-- 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;
Na consulta acima, utilizamos o bloco BEGIN
para indicar que todas as instruções seguintes devem ser consideradas como uma única unidade — se uma delas não for executada, nenhuma das instruções deve ser executada.
A palavra-chave COMMIT
indica o fim do bloco de transação.
Obrigado pelo seu feedback!