Sobes.tech
Junior — Middle

Můžete vysvětlit, co se rozumí pod pojmem transakce v kontextu databází?

sobes.tech AI

Odpověď od AI

Transakce v databázích je sled operací, které se provádějí jako jedna celek. Transakce buď úspěšně dokončí celý proces (commit), nebo je úplně vrácena (rollback), pokud dojde k chybě. To zajišťuje integritu dat a zabraňuje částečným aktualizacím.

Hlavní vlastnosti transakcí jsou popsány zkratkou ACID:

  • Atomicita — všechny operace v rámci transakce jsou provedeny úplně nebo vůbec.
  • Konzistence — po provedení transakce zůstává databáze ve správném stavu.
  • Izolace — paralelní transakce na sebe navzájem neovlivňují.
  • Dostatečnost — po potvrzení transakce jsou změny zachovány i při selhání.

Příklad v Node.js s knihovnou pg pro PostgreSQL:

const { Client } = require('pg');

async function runTransaction() {
  const client = new Client();
  await client.connect();

  try {
    await client.query('BEGIN');
    await client.query('INSERT INTO users(name) VALUES($1)', ['Alice']);
    await client.query('INSERT INTO accounts(user_id, balance) VALUES($1, $2)', [1, 100]);
    await client.query('COMMIT');
  } catch (e) {
    await client.query('ROLLBACK');
    throw e;
  } finally {
    await client.end();
  }
}