Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Aprenda Atomicidade | Acid
Técnicas Avançadas em SQL

bookAtomicidade

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

  • tabela UserLogs com colunas: account_number, action, timestamp etc. A combinação de account_number e timestamp é 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.

question mark

O que o conceito de atomicidade garante no contexto de transações de banco de dados?

Select the correct answer

Tudo estava claro?

Como podemos melhorá-lo?

Obrigado pelo seu feedback!

Seção 1. Capítulo 3

Pergunte à IA

expand

Pergunte à IA

ChatGPT

Pergunte o que quiser ou experimente uma das perguntas sugeridas para iniciar nosso bate-papo

Awesome!

Completion rate improved to 4.35

bookAtomicidade

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

  • tabela UserLogs com colunas: account_number, action, timestamp etc. A combinação de account_number e timestamp é 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.

question mark

O que o conceito de atomicidade garante no contexto de transações de banco de dados?

Select the correct answer

Tudo estava claro?

Como podemos melhorá-lo?

Obrigado pelo seu feedback!

Seção 1. Capítulo 3
some-alt