• 締切済み

AUTO_INCREMENT の値をINSERT前に知りたい

PHP(PEAR)+MYSQLでWEBアプリを作成しているのですが、AUTO_INCREMENTを設定した値をデータのINSERTを行う前に取得したいのですが、どのようにすればいいのでしょうか?INSERT後であればLAST_INSERT_ID()やmysql_insert_id()で取得できるのは分かっているのですが…。ちなみに現在のテーブル型はInnoDBです。MySQLもしくはPearの命令でお分かりになる方お教えください。よろしくお願いします。

みんなの回答

  • nora1962
  • ベストアンサー率60% (431/717)
回答No.3

正確に言えば取得できないと思います。 トランザクションが3つある場合。 TRAN1: start transaction; TRAN2: start transaction; TRAN3: start transaction; TRAN1: insert (autoincrement) TRAN2: SHOW TABLE STATUS (autoincrementされた値が返る) TRAN3: insert (autoincrement) この状態ではTRAN2が次にInsertした場合挿入される値は「SHOUW TABLE SGTATUS」で 得られた値とは異なります。

  • gutpela
  • ベストアンサー率0% (0/0)
回答No.2

No.1の方の回答とは、違った観点から回答しておきます。 例えば、maxとauto_incrementにズレがないか比較する場合などを想定して。 昔のことで解決済みだと思いますが、他の方のためにも。 <?php $res = mysql_query("SHOW TABLE STATUS [FROM 《DB名》] LIKE '《テーブル名》'"); while($r = mysql_fetch_assoc($res)){ echo $r[Auto_increment]; } ?> これで、LAST_INSERT_ID()やmysql_insert_id()を使用せずに、 Auto_incrementの値を取得できるのではないかと思います。

参考URL:
http://www.mmdb.net/m_kaneko/mysql/show.html
  • moon_night
  • ベストアンサー率32% (598/1831)
回答No.1

AUTO_INCREMENT を設定した値を max() で取ればいいのでは?

関連するQ&A