rails2.2.3、mysql5.1.41で、

@hoge = Hoge.new(params[:hoge])
if @hoge.save
のようにして値をDBにセーブしています。
テーブルにはauto_incrementになっているフィールドがあります。
セーブ後にauto_incrementされた値を取得したいのですが、いい方法はありますか?

回答の条件
  • 1人2回まで
  • 登録:2010/07/18 02:25:50
  • 終了:2010/07/23 18:02:26

回答(2件)

id:windofjuly No.1

うぃんど回答回数2625ベストアンサー獲得回数11492010/07/18 03:16:15

ポイント20pt

同一セッション内であれば下記のSQLを投げてやるだけで値を取得できます。詳細はコマンドリファレンス参照

SELECT mysql_insert_id();

http://dev.mysql.com/doc/refman/5.1/ja/mysql-insert-id.html

以前のINSERT ステートメントによって生成された値を戻します。

mysql_insert_id()の値は、現在のクライアント接続の中に発行されたステートメントのみによって影響を受けます。それは、他のクライアントによって発行されたステートメントによって影響を受けません。

セッションを切断してしまっている場合は最大値を求めるSQLを投げることになりますね

SELECT max(フィールド名) FROM テーブル名;
id:shintabo No.2

shintabo回答回数45ベストアンサー獲得回数102010/07/18 12:03:59

ポイント50pt

# auto increment のカラムが id であれば

@hoge.id

# で取れると思いますよ

id:GanbareNIPPON

うまくいきました。ありがとうございます。

2010/07/18 20:25:41

コメントはまだありません

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません