- 締切済み
AUTO_INCREMENT の値をINSERT前に知りたい
PHP(PEAR)+MYSQLでWEBアプリを作成しているのですが、AUTO_INCREMENTを設定した値をデータのINSERTを行う前に取得したいのですが、どのようにすればいいのでしょうか?INSERT後であればLAST_INSERT_ID()やmysql_insert_id()で取得できるのは分かっているのですが…。ちなみに現在のテーブル型はInnoDBです。MySQLもしくはPearの命令でお分かりになる方お教えください。よろしくお願いします。
- みんなの回答 (3)
- 専門家の回答
みんなの回答
- nora1962
- ベストアンサー率60% (431/717)
正確に言えば取得できないと思います。 トランザクションが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.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の値を取得できるのではないかと思います。
- moon_night
- ベストアンサー率32% (598/1831)
AUTO_INCREMENT を設定した値を max() で取ればいいのでは?