Mysql
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Mysql

Giao dịch MySQL nguyên tử trong Anorm

Sử dụng withTransaction thay vì withConnection như thế này:

private def incrementHitCounter(urlName:String) {
  DB.withTransaction { implicit connection =>
    SQL("select @hits:=hits from content_url_name where url_name={urlName};").on("urlName" -> urlName).apply()
    SQL("update content_url_name set hits = @hits + 1 where url_name={urlName};").on("urlName" -> urlName).executeUpdate()
  }
}

Và tại sao bạn thậm chí sẽ sử dụng một giao dịch ở đây? Điều này cũng sẽ hoạt động:

private def incrementHitCounter(urlName:String) {
  DB.withConnection { implicit connection =>
    SQL("update content_url_name set hits = (select hits from content_url_name where url_name={urlName}) + 1 where url_name={urlName};").on("urlName" -> urlName).executeUpdate()
  }
}



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. json_encode với nội dung mysql và âm sắc trong utf-8

  2. MYSQL - nhận một hàng cho mỗi năm, với tổng số tiền cho mỗi tháng

  3. Hủy chia bảng trong MySQL

  4. Cách tính tổng một cột dựa trên nhóm trong MySQL

  5. Làm cách nào để tôi có thể Chèn dữ liệu vào Cơ sở dữ liệu MySQL?