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