transaction.begin: thực tế là execute query: set auto commit = false cộng trừ tiền transaction.commit: commit kết quả vào db
hôm trước anh bảo rằng là đoạn này có vấn đề nếu đa luồng, em k hiểu, bây giờ 2 threads cùng tạo 2 transaction thực thi, transaction nào chạy trước thì lock lại thôi ạ
set auto commit = false
không có nghĩa là tạo ra một transaction, nó chỉ báo cho DB server biết rằng các câu lệnh tiếp theo sẽ không được auto commit mà phải đợi khi có lệnh commit được gọi. Như ở trong thời điểmset auto commit = false
thì em có 2 thread thì không có lock nào ở đây cả.