Sobes.tech
Intern

Num serviço web, é necessário registar um pedido e deduzir o saldo do stock de forma que ambas as operações sejam mantidas ou nenhuma. Quais comandos SQL são utilizados para envolver um conjunto de consultas, e como agir em caso de erro antes da confirmação?

sobes.tech IA

Resposta da IA

Para garantir a atomaridade das operações de registo de pedidos e dedução do saldo do stock em SQL, utilizam-se transações. Os comandos principais para envolver um conjunto de consultas são:

  • BEGIN ou START TRANSACTION — inicia a transação.
  • Executar as consultas necessárias (por exemplo, INSERT de pedido e UPDATE de stock).
  • COMMIT — confirma as alterações se todas as operações correrem bem.
  • ROLLBACK — desfaz todas as alterações na transação em caso de erro antes de confirmar.

Exemplo em SQL:

BEGIN;
INSERT INTO orders (...) VALUES (...);
UPDATE stock SET quantity = quantity - ? WHERE product_id = ?;
-- se não houver erros
COMMIT;
-- se houver erro
ROLLBACK;

No código, ao detectar um erro antes de chamar COMMIT, deve-se chamar ROLLBACK para reverter todas as alterações e manter a integridade dos dados.