Rumah > pangkalan data > tutorial mysql > Bagaimana untuk Memadamkan Bilangan Tertentu Baris Tertib dalam PostgreSQL Tanpa Kunci Utama?

Bagaimana untuk Memadamkan Bilangan Tertentu Baris Tertib dalam PostgreSQL Tanpa Kunci Utama?

Mary-Kate Olsen
Lepaskan: 2025-01-05 07:42:42
asal
325 orang telah melayarinya

How to Delete a Specific Number of Ordered Rows in PostgreSQL Without a Primary Key?

Memelihara Kiraan Pemadaman Baris dalam PostgreSQL Tanpa Isih dan Kunci Utama

Dalam PostgreSQL, ketidakupayaan untuk menggabungkan pesanan atau had dengan sintaks pemadaman menimbulkan cabaran apabila cuba memadamkan bilangan baris tertentu sambil mengekalkan susunannya mereka dipilih. Ini lebih rumit dengan ketiadaan kunci utama dalam jadual.

Penyelesaian: Menggunakan ctid

Untuk memintas pengehadan ini, kita boleh memanfaatkan ctid (Semasa Pengecam Tuple) bagi baris:

DELETE FROM ONLY logtable
WHERE ctid IN (
    SELECT ctid
    FROM logtable
    ORDER BY timestamp
    LIMIT 10
);
Salin selepas log masuk

Ctid menyediakan satu pengecam untuk setiap versi baris dalam jadualnya. Dengan memilih ctids daripada 10 baris pertama yang diisih mengikut cap masa dan menggunakannya dalam pernyataan DELETE, kami boleh mengalih keluar bilangan baris yang diingini dengan berkesan, walaupun jika semua nilai cap masa adalah sama.

Pertimbangkan Dipartisi Jadual

Jika jadual log dipisahkan, kita perlu mengambil kira kemungkinan berbilang partition yang mengandungi baris dengan cap masa yang sama. Untuk mengelakkan pemadaman terlalu banyak baris, kami boleh memasukkan tableoid (pengecam jadual) dalam pertanyaan:

DELETE FROM logtable
WHERE (tableoid,ctid) IN (
    SELECT tableoid,ctid
    FROM logtable
    ORDER BY timestamp
    LIMIT 10
);
Salin selepas log masuk

Ini memastikan pemadaman terhad kepada bilangan baris yang ditentukan dalam setiap partition.

Dengan menggunakan ctid dan tableoid, kami boleh melaksanakan fungsi yang diingini untuk memadamkan bilangan baris tetap dengan mengisih dalam PostgreSQL, walaupun tanpa kunci utama.

Atas ialah kandungan terperinci Bagaimana untuk Memadamkan Bilangan Tertentu Baris Tertib dalam PostgreSQL Tanpa Kunci Utama?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan