明示的な順序付けを指定せずにデータベースにクエリを実行する場合、一貫した順序で結果が返されることを期待するのが一般的です。注文。ただし、PostgreSQL では、行を更新すると、結果の順序が予期せず変更される可能性があります。
この例では、
postgres=# select * from check_user; id | name ----+------ 1 | x 2 | y 3 | z 4 | a 5 | c1\ 6 | c2 7 | c3 (7 rows) postgres=# update check_user set name = 'c1' where name = 'c1\'; UPDATE 1 postgres=# select * from check_user; id | name ----+------ 1 | x 2 | y 3 | z 4 | a 6 | c2 7 | c3 5 | c1 (7 rows)
更新前は、行は ID 順に並べられていました。ただし、エスケープされた名前で行を更新すると、結果の順序が変わりました。これは混乱を招く可能性があり、予期しない結果につながる可能性があります。
SELECT クエリで ORDER BY 句が指定されていない場合、PostgreSQL は返された行に対して未定義の内部順序を使用します。 。この順序付けは、行がディスクに格納される順序、ページの読み取り順序、インデックスの使用状況などの要因に基づいています。
デフォルトの順序付けに依存しないようにすることが重要です。 PostgreSQLの結果。この動作は予測不可能であり、さまざまな要因に基づいて変化する可能性があります。このため、一貫性があり予測可能な結果の順序付けを保証するために、クエリには常に ORDER BY 句を指定してください。
以上がPostgreSQL が行更新後に順序なしデータを返すのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。