Sobes.tech
Junior — Middle

Използвали ли сте командата SELECT FOR UPDATE за блокиране на редове при работа с базата данни?

sobes.tech AI

Отговор от AI

Да, командата SELECT FOR UPDATE се използва за блокиране на избраните редове в базата данни, за да се предотврати тяхната промяна от други транзакции до завършването на текущата. Това е полезно при реализиране на логика, при която трябва да се гарантира, че данните няма да се променят между четенето и последващото обновяване.

Пример за използване в Java с JDBC:

String sql = "SELECT * FROM accounts WHERE id = ? FOR UPDATE";
try (PreparedStatement ps = connection.prepareStatement(sql)) {
    ps.setInt(1, accountId);
    ResultSet rs = ps.executeQuery();
    if (rs.next()) {
        // Работа с данните
    }
    // След изпълнение на всички операции, транзакцията ще освободи блокировката
}

Важно е SELECT FOR UPDATE да се изпълнява в рамките на транзакция, за да бъде блокировката ефективна.