Sobes.tech
Junior — Middle

Czy używałeś polecenia SELECT FOR UPDATE do blokowania wierszy podczas pracy z bazą danych?

sobes.tech AI

Odpowiedź od AI

Tak, polecenie SELECT FOR UPDATE służy do blokowania wybranych wierszy w bazie danych, aby zapobiec ich modyfikacji przez inne transakcje do czasu zakończenia bieżącej. Jest to przydatne przy implementacji logiki, w której trzeba zagwarantować, że dane nie zmienią się między odczytem a późniejszą aktualizacją.

Przykład użycia w Java z 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()) {
        // Praca z danymi
    }
    // Po wykonaniu wszystkich operacji, zatwierdzenie transakcji usunie blokadę
}

Ważne, aby SELECT FOR UPDATE był wykonywany w ramach transakcji, aby blokada była skuteczna.