0

Cakephp プロジェクトで postgres データベースを使用しています。いくつかのデータと「ステータス」という列を含むテーブルがあります。「ステータス」は列挙型で、「待機中」、「進行中」、「完了」のいずれかです。

私のスクリプトは、status=waiting で最初に見つかったレコードを取得し、ステータスを「in_progress」に変更し、このレコードの ID とこれらすべてを 1 つのアトミック プロシージャで取得する必要があります。

ステータスを「完了」に変更するには、計算後に ID が必要です。このような単純な「行ロック」が必要な理由は、並行して動作するそのようなスクリプトが多数あるためです。

初めて postgres db を使用しています - これを達成する簡単な方法はありますか? おそらくケーキはこれを行う便利な方法をサポートしていますか?

4

1 に答える 1

1

CakePHP では、使用している DB の種類に違いはありません$this->Model->find...。ステータスを変更してから '$this->Model->save....` を使用するだけです。

$row = $this->Model->find('first',array('conditions' => array('Model.status' => 'waiting')));
$row['Model']['status'] = 'in progress';
$this->Model->save($row);
(...do something...)

$row['Model']['status'] = 'completed';
$this->Model->save($row);

おそらく、ループで実行し、ある種の const をステータスとして配置する必要があります...

于 2012-09-13T13:23:19.300 に答える