アプリ版:「スタンプのみでお礼する」機能のリリースについて

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

A 回答 (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」で
得られた値とは異なります。
    • good
    • 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の値を取得できるのではないかと思います。

参考URL:http://www.mmdb.net/m_kaneko/mysql/show.html
    • good
    • 0

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

    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

関連するカテゴリからQ&Aを探す