sql >> Databáze >  >> RDS >> Mysql

Pronájem úloh (atomová aktualizace a získání) z databáze MySQL

Moje řešení s malým trikem:za prvé:musíte použít podvýběr, aby UPDATE ne teď to je stejná tabulka a za sekundu:musíte inicializovat @id pomocí "(SELECT @id:=0)", jinak pokud nenalezený žádný řádek vrátí poslední nastavenou hodnotu. Zde můžete také určit, zda vrátí 0 nebo '', když není nalezen žádný výsledek.

UPDATE jobs SET lease=NOW() WHERE id =
  ( SELECT * FROM 
     ( SELECT @id:=id  FROM jobs,(SELECT @id:=0) AS tmp_id
       WHERE TIMESTAMPDIFF(HOUR,lease,NOW())>=8 
       AND NOT complete ORDER BY priority LIMIT 1
     ) AS tmp
  );


  1. SQL LIMIT vs. příkaz JDBC setMaxRows. Který je lepší?

  2. Jak lze dočasně deaktivovat omezení cizích klíčů pomocí T-SQL?

  3. MySQL DATE_FORMAT '%M' na krátký měsíc?

  4. Jak vrátím datové typy SQL z mého dotazu?