

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

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

`CREATE TABLE` definisce una nuova tabella.

```
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 [, ... ] ) ]
```

## Colonne di identità
<a name="create-table-identity-columns"></a>

**Nota**  
Quando si utilizzano le colonne di identità, il valore della cache deve essere considerato attentamente. Per ulteriori informazioni, consulta il callout importante nella [`CREATE SEQUENCE`](create-sequence-syntax-support.md) pagina.  
Per indicazioni su come utilizzare al meglio le colonne di identità in base ai modelli di carico di lavoro, consulta. [Utilizzo di sequenze e colonne di identità](sequences-identity-columns-working-with.md)

La `GENERATED { ALWAYS | BY DEFAULT } AS IDENTITY ( sequence_options )` clausola crea la colonna come colonna di *identità*. Alla colonna sarà associata una sequenza implicita e nelle righe appena inserite la colonna avrà automaticamente i valori della sequenza assegnata. Tale colonna è implicita. `NOT NULL`

Le clausole `ALWAYS` e i comandi `BY DEFAULT` determinano la modalità di gestione esplicita dei valori e dei comandi specificati dall'utente. `INSERT` `UPDATE`

In un `INSERT` comando, se `ALWAYS` è selezionato, un valore specificato dall'utente viene accettato solo se l'istruzione lo specifica. `INSERT` `OVERRIDING SYSTEM VALUE` Se `BY DEFAULT` è selezionato, il valore specificato dall'utente ha la precedenza.

In un `UPDATE` comando, se `ALWAYS` selezionato, qualsiasi aggiornamento della colonna a qualsiasi valore diverso da quello `DEFAULT` verrà rifiutato. Se `BY DEFAULT` è selezionata, la colonna può essere aggiornata normalmente. (Non esiste alcuna `OVERRIDING` clausola per il `UPDATE` comando.)

La *sequence\$1options* clausola può essere utilizzata per sovrascrivere i parametri della sequenza. Le opzioni disponibili includono quelle mostrate per[`CREATE SEQUENCE`](create-sequence-syntax-support.md), plus. `SEQUENCE NAME name` `SEQUENCE NAME`In caso contrario, il sistema sceglie un nome inutilizzato per la sequenza.