2

自動インクリメントとしてテーブルCLIENTがあります。client_idここで、他のテーブルSERVICE、COSTUMERS、およびSTOCKを同時に設定する必要があります。client_id問題は、CLIENT から新しく生成されたものを他のテーブルにも入力する必要があることです。

今私がやっていること:

  1. CLIENT テーブルに行を挿入します。
  2. そのテーブルから MAX(client_id) を取得します。
  3. それを他の人に入れます。

ここでは、MAX(client_id) が最近生成されたものであるという推測にすべて依存しているため、一貫性について心配しています。一貫性を危険にさらすことなくそうする他の方法はありますか??

助けてください

4

1 に答える 1

3

を使用してそれを達成することができます

mysql_insert_id()

最後のクエリで AUTO INCREMENT 値を返します。最後のクエリが自動インクリメント値を生成しない場合、0 が返されます。

詳細については、Php.net のマニュアルを参照してください。

編集:

おっしゃったように、Mysql は非推奨であり、Mysqli または PDO を使用する方が安全です。

Mysqli

手続き型のスタイル:mysqli_insert_id ( mysqli $link )

オブジェクト指向スタイル:$mysqli->insert_id

PDO

$PDO->lastInsertId()

于 2013-10-27T18:53:37.657 に答える