Sobes.tech
Back to questions
Junior — Middle
85

Имели ли вы опыт работы с механизмами управления транзакциями в SQL-базах данных?

Companies where asked
СБЕРСБЕР

Answer from AI

sobes.tech AI

Да, в работе с SQL-базами данных управление транзакциями — важный аспект для обеспечения целостности данных.

Транзакция — это последовательность операций, которая выполняется как единое целое: либо все операции успешно завершаются (commit), либо при ошибке все изменения отменяются (rollback).

В Node.js для управления транзакциями часто используют библиотеки, например, sequelize или knex. Пример с использованием knex:

const knex = require('knex')({ client: 'pg', connection: process.env.PG_CONNECTION_STRING });

async function transferFunds(fromAccount, toAccount, amount) {
  await knex.transaction(async trx => {
    const fromBalance = await trx('accounts').where('id', fromAccount).select('balance').first();
    if (fromBalance.balance < amount) throw new Error('Недостаточно средств');

    await trx('accounts').where('id', fromAccount).decrement('balance', amount);
    await trx('accounts').where('id', toAccount).increment('balance', amount);
  });
}

В этом примере все операции внутри транзакции либо выполнятся успешно, либо при ошибке изменения откатятся, что гарантирует консистентность данных.

Таким образом, опыт работы с транзакциями включает понимание ACID-свойств и умение использовать API для управления commit и rollback.