人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

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

●質問者: GanbareNIPPON
●カテゴリ:コンピュータ ウェブ制作
✍キーワード:.new dB hoge セーブ フィールド
○ 状態 :終了
└ 回答数 : 2/2件

▽最新の回答へ

1 ● うぃんど
●20ポイント

同一セッション内であれば下記の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 テーブル名;

2 ● shintabo
●50ポイント

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

@hoge.id

# で取れると思いますよ

◎質問者からの返答

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

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ