6

Rubyの続編を使用してlast_insert_id()を取得したいだけです。

insertret = @con.run("INSERT INTO `wv_persons` ( `id` ) VALUES ( NULL )")
pp insertret.inspect # returns "nil", expected that..
last_insert_id = @con.run("SELECT LAST_INSERT_ID() AS last_id;")
pp last_insert_id.inspect # returns "nil", should be an ID

SELECTクエリはlast_idを返す必要がありますが、.runはそれを返しません。代わりにどの方法を使用すればよいですか?

解決策: (JoshLindseyに感謝します)

last_insert_id = @con[:wv_persons].insert({})
last_insert_id = last_insert_id.to_s
puts "New person ["+ last_insert_id  +"]"
4

3 に答える 3

9

Dataset#insertメソッドは、最後の挿入IDを返す必要があります。

DB[:wv_persons].insert({})

デフォルト値を挿入し、IDを返します。

Database#runは常にを返しnilます。

于 2010-08-13T15:16:26.487 に答える
5

実際には、Database#insertが最後に挿入されたレコードの ID を返すことは保証されていません。

ドキュメントから:「...関連するテーブルに値を挿入します。通常、返される値は、挿入された行の主キーの値ですが、それはアダプターに依存します。

于 2013-12-29T16:40:44.357 に答える