Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Aprenda Atomicidade | Acid
Practice
Projects
Quizzes & Challenges
Quizzes
Challenges
/
Otimização de SQL e Recursos de Consulta

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 determinada unidade lógica sejam concluídas, ou nenhuma delas será.

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.

Considere um cenário em que existam 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.

Nos próximos exemplos de código, será demonstrado como os dados são inseridos e gerenciados nessas tabelas, ilustrando operações atômicas utilizando entradas reais do esquema fornecido.

12
SELECT * FROM BankAccounts;
copy
12
SELECT * FROM UserLogs;
copy

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 básico de como isso pode ser feito utilizando uma transação:

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

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

Suggested prompts:

Can you explain what would happen if one of the statements in the transaction fails?

How does rollback work in this scenario?

Can you show an example where the transaction fails and is rolled back?

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 determinada unidade lógica sejam concluídas, ou nenhuma delas será.

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.

Considere um cenário em que existam 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.

Nos próximos exemplos de código, será demonstrado como os dados são inseridos e gerenciados nessas tabelas, ilustrando operações atômicas utilizando entradas reais do esquema fornecido.

12
SELECT * FROM BankAccounts;
copy
12
SELECT * FROM UserLogs;
copy

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 básico de como isso pode ser feito utilizando uma transação:

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

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