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.