sql >> データベース >  >> RDS >> Mysql

MySQLデータベースからのジョブのリース(アトミック更新と取得)

    ちょっとしたトリックを使った私の解決策:最初:UPDATEが同じテーブルにならないように副選択を使用する必要があります2番目:@idを "(SELECT @id:=0)"で初期化する必要があります。最後に設定した値。ここでは、結果が見つからない場合に0または''を返すかどうかを指定することもできます。

    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. カンマ区切りの値を個々の行に分割します

    2. SQL-データベースにフォームを挿入します

    3. AndroidSQLiteの挿入または更新

    4. クラウド内のMySQL-AmazonRDSの長所と短所