

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

# `CREATE TABLE`
<a name="create-table-syntax-support"></a>

`CREATE TABLE`mendefinisikan tabel baru.

```
CREATE TABLE [ IF NOT EXISTS ] table_name ( [
  { column_name data_type [ column_constraint [ ... ] ]
    | table_constraint
    | LIKE source_table [ like_option ... ] }
    [, ... ]
] )

where column_constraint is:

[ CONSTRAINT constraint_name ]
{ NOT NULL |
  NULL |
  CHECK ( expression )|
  DEFAULT default_expr |
  GENERATED ALWAYS AS ( generation_expr ) STORED |
  GENERATED { ALWAYS | BY DEFAULT } AS IDENTITY ( sequence_options ) |
  UNIQUE [ NULLS [ NOT ] DISTINCT ] index_parameters |
  PRIMARY KEY index_parameters |

and table_constraint is:

[ CONSTRAINT constraint_name ]
{ CHECK ( expression ) |
  UNIQUE [ NULLS [ NOT ] DISTINCT ] ( column_name [, ... ] ) index_parameters |
  PRIMARY KEY ( column_name [, ... ] ) index_parameters |

and like_option is:

{ INCLUDING | EXCLUDING } { COMMENTS | CONSTRAINTS | DEFAULTS | GENERATED | IDENTITY | INDEXES | STATISTICS | ALL }

index_parameters in UNIQUE, and PRIMARY KEY constraints are:
[ INCLUDE ( column_name [, ... ] ) ]
```

## Kolom identitas
<a name="create-table-identity-columns"></a>

**catatan**  
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).

`GENERATED { ALWAYS | BY DEFAULT } AS IDENTITY ( sequence_options )`Klausa membuat kolom sebagai *kolom identitas*. Ini akan memiliki urutan implisit yang melekat padanya dan di baris yang baru disisipkan kolom akan secara otomatis memiliki nilai dari urutan yang ditetapkan padanya. Kolom seperti itu secara implisit`NOT NULL`.

Klausa `ALWAYS` dan `BY DEFAULT` 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.

Dalam sebuah `UPDATE` perintah, jika `ALWAYS` dipilih, setiap pembaruan kolom ke nilai apa pun selain `DEFAULT` akan ditolak. Jika `BY DEFAULT` dipilih, kolom dapat diperbarui secara normal. (Tidak ada `OVERRIDING` klausul untuk `UPDATE` perintah.)

*sequence\$1options*Klausa dapat digunakan untuk mengganti parameter urutan. Opsi yang tersedia termasuk yang ditampilkan untuk[`CREATE SEQUENCE`](create-sequence-syntax-support.md), plus`SEQUENCE NAME name`. Tanpa`SEQUENCE NAME`, sistem memilih nama yang tidak digunakan untuk urutan.