Rumah > pangkalan data > tutorial mysql > Bagaimanakah Saya Boleh Melaksanakan Auto-Penomboran untuk Kunci Kompaun dengan Cekap dalam PostgreSQL?

Bagaimanakah Saya Boleh Melaksanakan Auto-Penomboran untuk Kunci Kompaun dengan Cekap dalam PostgreSQL?

Patricia Arquette
Lepaskan: 2025-01-07 19:46:42
asal
225 orang telah melayarinya

How Can I Efficiently Implement Auto-Numbering for Compound Keys in PostgreSQL?

Penomboran Auto Kunci Kompaun PostgreSQL: Pendekatan Ringkas

Menjejaki perubahan alamat individu dari semasa ke semasa memerlukan pengecam unik untuk setiap perubahan dalam sejarah seseorang. Walaupun skim penomboran automatik yang kompleks wujud, PostgreSQL menawarkan penyelesaian yang lebih bersih dan cekap menggunakan lajur bersiri atau IDENTITI.

Mengelakkan Kerumitan

Kaedah tradisional selalunya membawa kepada sistem penomboran yang rumit dan mudah ralat. Ciri terbina dalam PostgreSQL menyediakan alternatif yang diperkemas.

Penyelesaian Disyorkan: Lajur Bersiri/IDENTITI

Memanfaatkan lajur serial atau IDENTITY PostgreSQL memudahkan proses dengan ketara. Ini menghapuskan keperluan untuk mengurus urutan yang kompleks.

Contoh Pelaksanaan

Berikut ialah cara untuk melaksanakan ini dalam jadual address_history:

<code class="language-sql">CREATE TABLE address_history (
  address_history_id serial PRIMARY KEY,
  person_id int NOT NULL REFERENCES people(id),
  created_at timestamptz NOT NULL DEFAULT current_timestamp,
  previous_address text
);</code>
Salin selepas log masuk

Mendapatkan Nombor Berjujukan

Untuk mendapatkan nombor turutan bagi setiap pertukaran alamat bagi setiap orang, gunakan fungsi tetingkap row_number():

<code class="language-sql">CREATE VIEW address_history_nr AS
SELECT *, row_number() OVER (PARTITION BY person_id ORDER BY address_history_id) AS adr_nr
FROM   address_history;</code>
Salin selepas log masuk

Paparan ini bertindak sebagai pengganti langsung untuk jadual address_history dalam pertanyaan, memberikan nombor jujukan (adr_nr) untuk setiap perubahan alamat.

Peningkatan Utama

  • Menggunakan timestamptz (cap masa dengan zon waktu) untuk ketepatan dan ketekalan yang dipertingkatkan.
  • Mengalih keluar lajur address dan original_address berlebihan, memudahkan struktur jadual. Hanya previous_address yang perlu.

Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Melaksanakan Auto-Penomboran untuk Kunci Kompaun dengan Cekap dalam PostgreSQL?. 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