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

Bagaimanakah Saya Melaksanakan Lajur Auto-Incrementing dalam PostgreSQL?

Mary-Kate Olsen
Lepaskan: 2025-01-22 11:32:09
asal
528 orang telah melayarinya

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:

CREATE TABLE Staff   (
  ID        INTEGER NOT NULL AUTO_INCREMENT,
  Name      VARCHAR(40) NOT NULL,
  PRIMARY KEY (ID)
);
Salin selepas log masuk

Walau bagaimanapun, ralat dikembalikan:

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

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:

CREATE TABLE staff (
  staff_id int GENERATED ALWAYS AS IDENTITY PRIMARY KEY,
  staff    text NOT NULL
);
Salin selepas log masuk

PostgreSQL 9.6 atau lebih rendah

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

CREATE TABLE staff (
  staff_id serial PRIMARY KEY,
  staff    text NOT NULL
);
Salin selepas log masuk

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