PostgreSQL
 sql >> Baza danych >  >> RDS >> PostgreSQL

Laravel 5 aktualizuje limit pojedynczych wierszy nie działa

W przeciwieństwie do Oracle lub MySQL aktualizuj instrukcje, używając LIMIT bezpośrednio w wyciągach aktualizacji PostgreSQL nie jest możliwe. Więc łączenie limit(1) metoda do instancji Query Builder nic nie robi, ponieważ compileUpdate metoda z PostgresGrammar Laravela klasa, która jest odpowiedzialna za kompilację zapytania, kompiluje tylko instrukcje where.

Możesz jednak obejść ten problem, stosując warunek, który używa podzapytania, które zwraca tylko jeden wiersz, który zostanie zaktualizowany. Coś takiego powinno działać:

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', ...) warunek zakłada, że ​​twoja tabela ma kolumnę o nazwie id który może być używany jako unikalny identyfikator, aby mógł znaleźć pierwszy wiersz, który pasuje do warunków w podzapytaniu.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Jak działa Round() w PostgreSQL

  2. ProgrammingError:błąd składni w lub w pobliżu podczas wykonywania zapytania w pythonie przy użyciu psycopg2

  3. Jak mogę ustawić ścieżkę do aplikacji heroku postgresql?

  4. postgresql date_trunc do dowolnej precyzji?

  5. Usuń blokady bez pid w postgres