Apabila menanyakan pangkalan data tanpa menyatakan pesanan eksplisit, adalah perkara biasa untuk mengharapkan keputusan dikembalikan secara konsisten pesanan. Walau bagaimanapun, dalam PostgreSQL, kemas kini pada baris secara tidak dijangka boleh mengubah susunan keputusan.
Dalam contoh yang diberikan:
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)
Sebelum kemas kini, baris telah dipesan mengikut ID. Walau bagaimanapun, selepas mengemas kini baris dengan nama yang dilepaskan, susunan keputusan berubah. Ini boleh mengelirukan dan boleh membawa kepada hasil yang tidak dijangka.
Apabila klausa ORDER BY tidak dinyatakan dalam pertanyaan SELECT, PostgreSQL menggunakan susunan dalaman yang tidak ditentukan untuk baris yang dikembalikan . Penyusunan ini adalah berdasarkan faktor seperti baris pesanan disimpan pada cakera, susunan bacaan halaman dan penggunaan indeks.
Adalah penting untuk mengelak daripada bergantung pada pesanan lalai Keputusan PostgreSQL. Tingkah laku ini tidak dapat diramalkan dan boleh berubah berdasarkan pelbagai faktor. Atas sebab ini, sentiasa nyatakan klausa ORDER BY dalam pertanyaan anda untuk memastikan pesanan hasil yang konsisten dan boleh diramal.
Atas ialah kandungan terperinci Mengapa PostgreSQL Mengembalikan Data Tidak Tertib Selepas Kemas Kini Baris?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!