Rumah >pangkalan data >tutorial mysql >Bagaimana untuk Memadamkan Bilangan Khusus Baris Isih dalam PostgreSQL Tanpa Kunci Utama?
Memadam baris dengan pengisihan boleh menjadi satu cabaran dalam PostgreSQL kerana pengehadannya dalam sintaks DELETE. Isu ini ditambah lagi dengan ketiadaan kunci utama, menjadikan penyelesaian subkueri tidak praktikal.
Untuk menangani cabaran ini, anda boleh menggunakan medan ctid, pengecam unik untuk setiap baris dalam jadual. Dengan memanfaatkan ctid, anda boleh membina pertanyaan yang menyasarkan baris tertentu untuk pemadaman berdasarkan kriteria pengisihan:
DELETE FROM ONLY logtable WHERE ctid IN ( SELECT ctid FROM logtable ORDER BY timestamp LIMIT 10 );
Medan ctid menyediakan pengecam unik untuk setiap versi baris. Walau bagaimanapun, adalah penting untuk ambil perhatian bahawa ia mungkin berubah jika baris dikemas kini atau dialihkan oleh VACUUM FULL. Selain itu, jika jadual log mempunyai jadual yang diwarisi, klausa PADAM DARI SAHAJA menghalang pemadaman baris secara tidak sengaja daripada jadual turunan.
Sekiranya jadual log dipisahkan, anda perlu memasukkan tableoid dalam pertanyaan untuk memastikan pemadaman berlaku hanya merentasi partition yang dimaksudkan:
DELETE FROM logtable WHERE (tableoid,ctid) IN ( SELECT tableoid,ctid FROM logtable ORDER BY timestamp LIMIT 10 );
Menggunakan teknik ini, anda boleh memadamkan bilangan baris dengan berkesan berdasarkan kriteria pengisihan, sambil mengekalkan tingkah laku pemadaman tepat, memastikan bilangan baris yang ditentukan dialih keluar tanpa mengira cap masa pendua.
Atas ialah kandungan terperinci Bagaimana untuk Memadamkan Bilangan Khusus Baris Isih dalam PostgreSQL Tanpa Kunci Utama?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!