Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.
Kolom identitas
penting
Saat menggunakan kolom identitas, nilai cache harus dipertimbangkan dengan cermat. Untuk informasi selengkapnya, lihat info penting di CREATE SEQUENCE halaman.
Untuk panduan tentang cara terbaik menggunakan kolom identitas berdasarkan pola beban kerja, lihatBekerja dengan urutan dan kolom identitas.
Kolom identitas adalah kolom khusus yang dihasilkan secara otomatis dari urutan implisit. Hal ini dapat digunakan untuk menghasilkan nilai-nilai kunci. Untuk membuat kolom identitas, gunakan GENERATED ... AS IDENTITY klausa diCREATE TABLE, misalnya:
CREATE TABLE people ( id bigint GENERATED ALWAYS AS IDENTITY (CACHE 70000), ... );
atau sebagai alternatif:
CREATE TABLE people ( id bigint GENERATED BY DEFAULT AS IDENTITY (CACHE 70000), ... );
Lihat CREATE TABLE untuk detail selengkapnya.
Jika INSERT perintah dijalankan pada tabel dengan kolom identitas dan tidak ada nilai yang secara eksplisit ditentukan untuk kolom identitas, maka nilai yang dihasilkan oleh urutan implisit dimasukkan. Misalnya, dengan definisi sebelumnya dan mengasumsikan kolom tambahan yang sesuai, menulis:
INSERT INTO people (name, address) VALUES ('A', 'foo'); INSERT INTO people (name, address) VALUES ('B', 'bar');
akan menghasilkan nilai untuk id kolom mulai dari 1 dan menghasilkan data tabel berikut:
id | name | address ----+------+--------- 1 | A | foo 2 | B | bar
Atau, kata kunci DEFAULT dapat ditentukan sebagai pengganti nilai untuk secara eksplisit meminta nilai yang dihasilkan urutan:
INSERT INTO people (id, name, address) VALUES (DEFAULT, 'C', 'baz');
Demikian pula, kata kunci DEFAULT dapat digunakan dalam UPDATE perintah.
Jadi, dalam banyak hal, kolom identitas berperilaku seperti kolom dengan nilai default.
Klausa ALWAYS dan BY DEFAULT definisi kolom menentukan bagaimana nilai yang ditentukan pengguna secara eksplisit ditangani dan perintah. INSERT UPDATE Dalam sebuah INSERT perintah, jika ALWAYS dipilih, nilai yang ditentukan pengguna hanya diterima jika INSERT pernyataan menentukan. OVERRIDING SYSTEM VALUE Jika BY DEFAULT dipilih, maka nilai yang ditentukan pengguna diutamakan. Dengan demikian, menggunakan BY DEFAULT hasil dalam perilaku yang lebih mirip dengan nilai default, di mana nilai default dapat diganti dengan nilai eksplisit, sedangkan ALWAYS memberikan beberapa perlindungan lebih terhadap memasukkan nilai eksplisit secara tidak sengaja.
Tipe data kolom identitas harus menjadi salah satu tipe data yang didukung oleh urutan. (Lihat CREATE SEQUENCE). Properti dari urutan terkait dapat ditentukan saat membuat kolom identitas (lihatCREATE TABLE) atau diubah setelahnya (lihatALTER TABLE).
Kolom identitas secara otomatis ditandai sebagaiNOT NULL. Kolom identitas, bagaimanapun, tidak menjamin keunikan. (Urutan biasanya mengembalikan nilai unik, tetapi urutan dapat diatur ulang, atau nilai dapat dimasukkan secara manual ke dalam kolom identitas, seperti yang dibahas sebelumnya.) Keunikan perlu ditegakkan menggunakan a PRIMARY KEY atau kendala. UNIQUE