PostgreSQL
 sql >> Teknologi Basis Data >  >> RDS >> PostgreSQL

Cara Mendefinisikan Kunci Utama Peningkatan Otomatis di PostgreSQL

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.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. zona waktu default postgres

  2. Deep-Dive Vendor Cloud:PostgreSQL di DigitalOcean

  3. bagaimana cara awalan string sebelum urutan yang dihasilkan oleh postgresql?

  4. Mengapa bilangan bulat yang tidak ditandatangani tidak tersedia di PostgreSQL?

  5. Hibernasi menyimpan model Pengguna ke Postgres