Sobes.tech
Junior — Middle

Puoi spiegare cosa si intende per transazione nel contesto dei database?

sobes.tech AI

Risposta dell'AI

Una transazione nei database è una sequenza di operazioni che viene eseguita come un'unica unità. La transazione si conclude con successo nel suo insieme (commit) o viene completamente annullata (rollback) in caso di errore. Questo garantisce l'integrità dei dati e previene aggiornamenti parziali.

Le proprietà principali delle transazioni sono descritte dall'acronimo ACID:

  • Atomicità — tutte le operazioni all'interno della transazione vengono eseguite completamente o non vengono eseguite affatto.
  • Consistenza — dopo l'esecuzione della transazione, il database rimane in uno stato corretto.
  • Isolamento — le transazioni parallele non influenzano le altre.
  • Durabilità — dopo la conferma della transazione, le modifiche vengono mantenute anche in caso di guasti.

Esempio in Node.js usando la libreria pg per 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();
  }
}