

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

# Kolom identitas
<a name="sequences-identity-columns-overview"></a>

**penting**  
Saat menggunakan kolom identitas, nilai cache harus dipertimbangkan dengan cermat. Untuk informasi selengkapnya, lihat info penting di [`CREATE SEQUENCE`](create-sequence-syntax-support.md) halaman.  
Untuk panduan tentang cara terbaik menggunakan kolom identitas berdasarkan pola beban kerja, lihat[Bekerja dengan urutan dan kolom identitas](sequences-identity-columns-working-with.md).

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 di[`CREATE TABLE`](create-table-syntax-support.md), 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`](create-table-syntax-support.md) 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`](create-sequence-syntax-support.md)). Properti dari urutan terkait dapat ditentukan saat membuat kolom identitas (lihat[`CREATE TABLE`](create-table-syntax-support.md)) atau diubah setelahnya (lihat[`ALTER TABLE`](alter-table-syntax-support.md)).

Kolom identitas secara otomatis ditandai sebagai`NOT 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`