0

たとえば5つUserのレコードを作成する場合は、それらをすべて破棄します。作成されたデータベースの次のUserエントリのidは6になります。railsは、この新しい行にのを与えるのではなく、与えることをどのように知ってid6ます1か?レコードの次のIDが何であるかを「推測」しようとしていたため、この問題がUser発生しましたが、上記のシナリオで問題が発生しました。私は現在postgresqlを使用していますが、この機能がデータベースに依存するとは思わないのですか?本当にありがとう!

4

1 に答える 1

3

これはデータベースに依存します。挿入すると、ほとんどのデータベースは挿入された行のIDを返します。PostgreSQLには、現在/次のID番号を保持する「シーケンス」と呼ばれるものがあります(どちらかはわかりません)。他のデータベースは異なる場合があります。

参照:https ://github.com/rails/rails/blob/master/activerecord/lib/active_record/connection_adapters/postgresql_adapter.rb#L726

ここで現在のシーケンスが見つかります:https ://github.com/rails/rails/blob/master/activerecord/lib/active_record/connection_adapters/postgresql_adapter.rb#L1513

于 2012-07-25T05:29:30.250 に答える