Rumah >pangkalan data >tutorial mysql >Mengapa AUTO_INCREMENT Tidak Berfungsi dalam PostgreSQL dan Bagaimana Saya Boleh Mencapai ID Auto-Incrementing?
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.
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
.
<code class="language-sql">CREATE TABLE staff ( staff_id int GENERATED ALWAYS AS IDENTITY PRIMARY KEY, staff text NOT NULL );</code>
<code class="language-sql">ALTER TABLE staff ADD COLUMN staff_id int GENERATED ALWAYS AS IDENTITY;</code>
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
.
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!