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 შესრულდეს ტრანზაქციის ფარგლებში, რათა ბლოკირება იყოს ეფექტური.