みんなの「教えて(疑問・質問)」にみんなで「答える」Q&Aコミュニティ

こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

MySQLでinsertした行を取得する

table t1

id name
-------
1 aaa
2 asv
3 aae

といったauto incrementのidを持ったテーブルt1を考えたときに
mysql_queryで新規行をinsertした場合にそのidを取得するような
ことはできるのでしょうか?

phpのmanualを参考にしたところ出来ないような感じのことが書かれて
いたのですが,このようなことは頻繁に必要な気もするのですが・・・

既に考えた案としては
・auto incrementを外して最大のidの1つ上を指定してinsertする
・一度lockしてからinsertして最大のidを取得する
というものです

もっと1つの関数かなにかでスマートに書けたらいいのですが

投稿日時 - 2005-08-17 00:01:54

QNo.1584694

困ってます

質問者が選んだベストアンサー

できますよ。ひとつのスマートな関数があります。

mysql_insert_id()

auto incrementで生成されたIDを得ることが出来ます。

参考URL:http://php.s3.to/man/function.mysql-insert-id.html

投稿日時 - 2005-08-17 09:14:19

ANo.2

このQ&Aは役に立ちましたか?

2人が「このQ&Aが役に立った」と投票しています

回答(2)

ANo.1

MySqlにPostgresのnextvalが無いのが残念なことですね。
一応、last_insert_id(最後に挿入された値を取得する)がありますが対象(シーケンス名など)を指定できませんので、INSERTオプションのLOW_PRIORITYやDELAYEDを上手く利用された方が拡張・再利用等に便利のように思えます。

投稿日時 - 2005-08-17 04:32:58

あなたにオススメの質問