私の解決策(Zendを使用)は、item_numberをクエリするのではなく、テーブルをロックし、結果を挿入クエリに追加し、テーブルを挿入してロックを解除することでした。ロックとロック解除の方法は次のとおりです。
$sql = "LOCK TABLE items WRITE";
$this->getAdapter()->query($sql);
//run select to get last item_number
//append result to insert array
//insert
$sql = "UNLOCK TABLES";
$this->getAdapter()->query($sql);
もう1つの方法は、挿入時に値が選択されるようにクエリを作成することです。次に例を示します:
$sql = INSERT INTO items (item_id, item_family, item_name, item_number)
VALUES (item_id, item_family, item_name, (SELECT item_number FROM... )+1);
$this->getAdapter()->query($sql);
この種のクエリの詳細については、 MySQLWeb>