Mysql
 sql >> база данни >  >> RDS >> Mysql

Atomic MySQL транзакции в Anorm

Използвайте withTransaction вместо withConnection така:

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()
  }
}

И защо изобщо бихте използвали транзакция тук? Това също трябва да работи:

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. MySql Last Insert ID, Connector .net

  2. JDBC, MySQL:получаване на битове в BIT(M!=1) колона

  3. laravel errno 150 ограничението за външен ключ е неправилно формирано

  4. попълнете квадратчетата за отметка и след това актуализирайте избора до mysql

  5. Има ли еквивалент за @@error на SQL Server в MySQL