Rumah >pangkalan data >tutorial mysql >Bagaimanakah Saya Melaksanakan Lajur Auto-Incrementing dalam PostgreSQL?

Bagaimanakah Saya Melaksanakan Lajur Auto-Incrementing dalam PostgreSQL?

Mary-Kate Olsen
Mary-Kate Olsenasal
2025-01-22 11:32:09467semak imbas

How Do I Implement Auto-Incrementing Columns in PostgreSQL?

Melaksanakan lajur autokenaikan dalam PostgreSQL

Ralat mungkin berlaku apabila cuba menggunakan AUTO_INCREMENT untuk menomborkan kunci utama secara automatik dalam PostgreSQL. SQL berikut menunjukkan contoh cuba mencipta jadual menggunakan AUTO_INCREMENT:

<code class="language-sql">CREATE TABLE Staff   (
  ID        INTEGER NOT NULL AUTO_INCREMENT,
  Name      VARCHAR(40) NOT NULL,
  PRIMARY KEY (ID)
);</code>

Walau bagaimanapun, ralat dikembalikan:

<code>ERROR: ERROR: syntax error at or near "AUTO_INCREMENT"
SQL state: 42601
Character: 63</code>

Versi PostgreSQL dan kenaikan automatik

Ralat ini berlaku kerana AUTO_INCREMENT bukan sintaks yang sah untuk autokenaikan dalam PostgreSQL. Sebaliknya, mekanisme berbeza digunakan bergantung pada versi PostgreSQL:

PostgreSQL 10 atau lebih tinggi

Untuk PostgreSQL 10 atau lebih baru, gunakan jenis lajur IDENTITY. Sintaksnya adalah seperti berikut:

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

PostgreSQL 9.6 atau lebih rendah

Untuk PostgreSQL 9.6 atau lebih rendah, gunakan jenis data bersiri:

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

jenis data pseudo bersiri secara automatik mencipta objek jujukan dan menetapkan DEFAULT kepada nilai jujukan seterusnya.

Nota lain

  • Gunakan pengecam sah, huruf kecil, tidak disebut untuk penggunaan yang lebih mudah dalam PostgreSQL.
  • Gunakan OVERRIDING {SYSTEM|USER} VALUE seperti yang diperlukan untuk mengatasi nilai sistem atau input pengguna dalam arahan INSERT.

Atas ialah kandungan terperinci Bagaimanakah Saya Melaksanakan Lajur Auto-Incrementing dalam PostgreSQL?. 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