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

Laravel 5 cập nhật giới hạn hàng đơn không hoạt động

Không giống với Oracle hoặc MySQL cập nhật báo cáo, sử dụng LIMIT trực tiếp trên câu lệnh cập nhật PostgreSQL là không thể. Vì vậy, chuỗi giới hạn limit(1) phương thức đối với phiên bản Trình tạo truy vấn không làm gì cả vì compileUpdate phương thức từ PostgresGrammar của Laravel lớp chịu trách nhiệm biên dịch truy vấn, chỉ biên dịch các câu lệnh where.

Tuy nhiên, bạn có thể khắc phục điều này bằng cách có một điều kiện sử dụng truy vấn con chỉ trả về một hàng sẽ được cập nhật. Một cái gì đó như thế này sẽ hoạt động:

DB::table("records")->whereIn('id', function ($query) use ($date_now) {
    $query->from('records')
          ->select('id')
          ->where('need_moderate', '=', 'no')
          ->where('locked_per_time', '<', $date_now->format("Y-m-d H:i:s"))
          ->limit(1);
})->update(["locked_per_time" => $locked_per->format("Y-m-d H:i:s"), 'locked_by' => $mdkey]);

whereIn('id', ...) điều kiện giả sử bảng của bạn có một cột có tên id có thể được sử dụng làm số nhận dạng duy nhất để nó có thể tìm thấy hàng đầu tiên phù hợp với điều kiện của bạn trong truy vấn con.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Cách sử dụng cấu trúc dữ liệu vòng trong các hàm cửa sổ

  2. Cách tạo ActiveRecord ThreadSafe

  3. rails động nơi truy vấn sql

  4. Cập nhật trình tự trên hàng INSERT

  5. Lặp lại trên số nguyên [] trong PL / pgSQL