Rumah >pangkalan data >tutorial mysql >Mengapa AUTO_INCREMENT Tidak Berfungsi dalam PostgreSQL dan Bagaimana Saya Boleh Mencapai ID Auto-Incrementing?

Mengapa AUTO_INCREMENT Tidak Berfungsi dalam PostgreSQL dan Bagaimana Saya Boleh Mencapai ID Auto-Incrementing?

DDD
DDDasal
2025-01-22 11:37:10399semak imbas

Why Doesn't AUTO_INCREMENT Work in PostgreSQL, and How Can I Achieve Auto-Incrementing IDs?

Menyelesaikan masalah AUTO_INCREMENT PostgreSQL

PostgreSQL tidak menyokong kata kunci AUTO_INCREMENT yang digunakan dalam sistem pangkalan data lain seperti MySQL. Percubaan untuk menggunakannya akan mengakibatkan ralat sintaks. Panduan ini menerangkan cara untuk mencapai kunci utama penambahan automatik dalam PostgreSQL.

PostgreSQL 10 dan Kemudian: Menggunakan Lajur IDENTITI

Pendekatan yang disyorkan untuk PostgreSQL 10 dan versi yang lebih baharu ialah menggunakan lajur IDENTITY. Tidak seperti SERIAL lajur, IDENTITY lajur menawarkan lebih fleksibiliti dengan pilihan GENERATED BY DEFAULT dan GENERATED ALWAYS.

Membuat Jadual dengan Lajur IDENTITI

<code class="language-sql">CREATE TABLE staff (
  staff_id int GENERATED ALWAYS AS IDENTITY PRIMARY KEY,
  staff    text NOT NULL
);</code>

Menambahkan Lajur IDENTITI pada Jadual Sedia Ada

<code class="language-sql">ALTER TABLE staff ADD COLUMN staff_id int GENERATED ALWAYS AS IDENTITY;</code>

PostgreSQL 9.6 dan Lebih Lama: Menggunakan SERIAL

Untuk versi PostgreSQL yang lebih lama (9.6 dan ke bawah), SERIAL pseudo-type menyediakan fungsi auto-increment yang serupa.

<code class="language-sql">CREATE TABLE staff (
  staff_id serial PRIMARY KEY,
  staff    text NOT NULL
);</code>

SERIAL mencipta dan mengurus jujukan yang berkaitan secara automatik, memastikan nilai yang unik dan bertambah untuk lajur staff_id.

Mengawal Nilai Disisipkan

Untuk kawalan terperinci ke atas nilai yang dimasukkan, malah mengatasi lalai sistem atau nilai yang disediakan pengguna, gunakan OVERRIDING {SYSTEM|USER} VALUE dalam pernyataan INSERT anda. Ini menawarkan kawalan lanjutan melangkaui penambahan automatik yang mudah.

Atas ialah kandungan terperinci Mengapa AUTO_INCREMENT Tidak Berfungsi dalam PostgreSQL dan Bagaimana Saya Boleh Mencapai ID Auto-Incrementing?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
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