serial
adalah semu tipe data, bukan tipe data yang sebenarnya. Ini adalah integer
di bawahnya dengan beberapa perintah DDL tambahan yang dijalankan secara otomatis:
- Buat urutan (dengan nama yang cocok secara default).
- Setel kolom
NOT NULL
dan default untuk menggambar dari urutan itu. - Jadikan kolom "milik" urutannya.
Detail:
- Mengganti nama tabel dengan aman dan rapi yang menggunakan kolom kunci utama serial di Postgres?
Sebuah bigserial
adalah sama, dibangun di sekitar bigint
kolom. Anda ingin bigint
, tapi Anda sudah mencapainya. Untuk mengubah serial
yang ada kolom menjadi bigserial
(atau smallserial
), yang perlu Anda lakukan adalah ALTER
tipe data kolom. Urutan umumnya didasarkan pada bigint
, jadi urutan yang sama dapat digunakan untuk integer
ketik.
Untuk "mengubah" sebuah bigint
menjadi bigserial
atau integer
menjadi serial
, Anda hanya perlu melakukan sisanya dengan tangan:
- Membuat urutan PostgreSQL ke bidang (yang bukan ID catatan)
Tipe data sebenarnya masih integer
/ bigint
. Beberapa klien seperti pgAdmin akan menampilkan tipe data serial
dalam CREATE TABLE
yang direkayasa terbalik skrip, jika semua kriteria untuk serial
terpenuhi.