Untuk database relasional seperti PostgreSQL, secara luas dapat dianggap sebagai dosa di antara pengembang tidak untuk memasukkan kunci utama di setiap tabel. Oleh karena itu, penting bagi Anda untuk melakukan yang terbaik untuk menambahkan kolom kunci utama yang sangat penting itu ke setiap tabel, dan untungnya Postgres menyediakan dua metode untuk menyelesaikan tugas ini.
Menggunakan Tipe Data Serial
Sejauh ini teknik paling sederhana dan paling umum untuk menambahkan kunci utama di Postgres adalah dengan menggunakan SERIAL
atau BIGSERIAL
tipe data saat CREATING
sebuah meja baru. Seperti yang ditunjukkan dalam dokumentasi resmi, SERIAL
bukan tipe data yang sebenarnya, tetapi hanya notasi singkatan yang memberitahu Postgres untuk membuat pengenal unik yang ditambahkan secara otomatis untuk kolom yang ditentukan.
Di bawah ini kami akan membuat books
sederhana kami tabel dengan SERIAL
yang sesuai tipe data untuk kunci utama.
CREATE TABLE books (
id SERIAL PRIMARY KEY,
title VARCHAR(100) NOT NULL,
primary_author VARCHAR(100) NULL
);
Cukup dengan menyetel id
kolom sebagai SERIAL
dengan PRIMARY KEY
terlampir, Postgres akan menangani semua pekerjaan di belakang layar yang rumit dan secara otomatis menambah id
kolom dengan nilai kunci utama yang unik untuk setiap INSERT
.
Menggunakan Urutan Kustom
Dalam beberapa kasus yang jarang terjadi, sifat inkremental standar dibangun ke dalam SERIAL
dan BIGSERIAL
tipe data mungkin tidak sesuai dengan kebutuhan Anda. Dalam kasus ini, Anda dapat melakukan fungsi kunci utama yang ditambahkan secara otomatis yang sama untuk kolom Anda dengan membuat SEQUENCE
kustom , mirip dengan metode yang digunakan di Oracle versi lama.
Mungkin kami sangat menyukai angka genap tetapi juga memiliki ketidaksukaan yang kuat untuk apa pun yang lebih kecil dari 100, jadi kami hanya ingin kunci utama kami bertambah dua mulai dari 100 untuk setiap sisipan. Ini dapat dilakukan dengan SEQUENCE
khusus seperti ini:
CREATE SEQUENCE books_sequence
start 2
increment 2;
Sekarang ketika kita INSERT
rekor baru ke dalam books
kami tabel, kita perlu mengevaluasi nilai berikutnya dari urutan kita dengan nextval('books_sequence')
dan gunakan itu sebagai id
our .
INSERT INTO books
(id, title, primary_author)
VALUES
(nextval('books_sequence'), 'The Hobbit', 'Tolkien');
SEQUENCE
dapat dibumbui lebih banyak lagi jika diinginkan, dengan opsi seperti minvalue
dan maxvalue
untuk tentu saja menunjukkan nilai ekstrim, dan bahkan CYCLE
, yang memungkinkan urutan untuk "berputar-putar" setelah mencapai maxvalue
, kembali ke start
nilai dan mulai mendaki lagi. Jauh lebih banyak informasi dapat ditemukan di dokumentasi resmi.