ようこそ ゲスト さん、新規登録(無料)して気になる疑問を解決しませんか?

質問

質問者:pug_mk データ登録・更新時の並びについて
困り度:
  • 困っています
ちょっと疑問に思ったので、ご存知の方がいらっしゃればご教授下さい。

以下のようなデータを登録します。
id  名前
1  あいう
2  かきく
3  さしす

登録後に閲覧すると、上記の並びでちゃんと表示されるのですが、
続いて、id=2の「かきく」を修正・登録してから閲覧すると
id  名前
1  あいう
3  さしす
2  かきく

という風に並んで表示されます。PostgreSQLでは何をキーにして並びを
決めているのでしょうか? また、それは設定を変更することによって
変えることは可能でしょうか?
やりたい事は、修正などをしても一番最初に登録した並びを保持したい
のです。

プログラム側でidをキーにしてソートすれば済む話なのですが、PostgreSQL
側でできることは、できるだけPostgreSQL側で処理させた方が良いと思った
ので、質問させて頂きました。

どうぞ、よろしくお願い致します。
質問投稿日時:06/05/24 12:04
質問番号:2171774
この質問に対する回答は締め切られました。

回答

良回答20pt

回答者:chukenkenkou 一定の順序で並べたければ、ORDER BYでソートする必要があります。
PostgreSQLは、何ら順序の保証をしていません。

=====抜粋(ここから)=====
7.5. 行のソート

ある問い合わせが1つの出力テーブルを生成した後(選択リストの処理が完了した後)、並べ替えることができます。並べ替えが選ばれなかった場合、行は無規則な順序で返されます。そのような場合、実際の順序は、スキャンや結合計画の種類や、ディスク上に格納されている順序に依存します。しかし、当てにはなりません。特定の順序で出力することは、明白に並べ替える処理を選択することでのみ保証されます。

ORDER BY句は並べ替えの順番を指定します。
=====抜粋(ここまで)=====
種類:アドバイス
どんな人:一般人
自信:自信あり
回答日時:06/05/24 13:03
回答番号:No.1
参考URL: http://www.postgresql.jp/document/pg813doc/html/queries-order.html
この回答へのお礼chukenkenkouさん、ご無沙汰しております。
そして、本当にいつもありがとうございます。
ちゃんと、マニュアルに目を通せば良いのですが、ついついOKWaveの
ようなコミュニティーを頼ってしまいます。(反省)
ご回答、ありがとうございました。