

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à.

# `ALTER TABLE`
<a name="alter-table-syntax-support"></a>

`ALTER TABLE` modifica la definizione di una tabella.

```
ALTER TABLE [ IF EXISTS ] [ ONLY ] name [ * ]
    action [, ... ]
ALTER TABLE [ IF EXISTS ] [ ONLY ] name [ * ]
    RENAME [ COLUMN ] column_name TO new_column_name
ALTER TABLE [ IF EXISTS ] [ ONLY ] name [ * ]
    RENAME CONSTRAINT constraint_name TO new_constraint_name
ALTER TABLE [ IF EXISTS ] name
    RENAME TO new_name
ALTER TABLE [ IF EXISTS ] name
    SET SCHEMA new_schema

where action is one of:

    ADD [ COLUMN ] [ IF NOT EXISTS ] column_name data_type
    ADD table_constraint_using_index
    ALTER [ COLUMN ] column_name { SET GENERATED { ALWAYS | BY DEFAULT } | SET sequence_option | RESTART [ [ WITH ] restart ] } [...]
    ALTER [ COLUMN ] column_name DROP IDENTITY [ IF EXISTS ]
    OWNER TO { new_owner | CURRENT_ROLE | CURRENT_USER | SESSION_USER }

and table_constraint_using_index is:

    [ CONSTRAINT constraint_name ]
    UNIQUE USING INDEX index_name
```

## Azioni della colonna Identity
<a name="alter-table-identity-columns"></a>

**`SET GENERATED { ALWAYS | BY DEFAULT }` / `SET sequence_option` / `RESTART`**  
Questi moduli modificano se una colonna è una colonna di identità o modificano l'attributo di generazione di una colonna di identità esistente. Per informazioni dettagliate, vedi [`CREATE TABLE`](create-table-syntax-support.md). Ad esempio`SET DEFAULT`, questi moduli influiscono solo sul comportamento dei `UPDATE` comandi `INSERT` e successivi e non modificano le righe già presenti nella tabella.  
*sequence\$1option*È un'opzione supportata da [`ALTER SEQUENCE`](alter-sequence-syntax-support.md)`INCREMENT BY`. Questi moduli alterano la sequenza che sta alla base di una colonna di identità esistente.

**`DROP IDENTITY [ IF EXISTS ]`**  
Questo modulo rimuove la proprietà identity da una colonna. Se `DROP IDENTITY IF EXISTS` viene specificato e la colonna non è una colonna di identità, non viene generato alcun errore. In questo caso viene invece emesso un avviso.

## Aggiungere azioni di vincolo
<a name="alter-table-add-constraint"></a>

**`ADD table_constraint_using_index`**  
Questo modulo aggiunge un nuovo `UNIQUE` vincolo a una tabella basata su un indice univoco esistente. Tutte le colonne dell'indice verranno incluse nel vincolo.  
L'indice deve trovarsi in `VALID` uno stato; l'aggiunta di un vincolo univoco utilizzando un indice mentre l'indice è attualmente in fase di creazione non è supportata.  
Se viene fornito un nome di vincolo, l'indice verrà rinominato in modo che corrisponda al nome del vincolo. Altrimenti il vincolo verrà denominato con lo stesso nome dell'indice.  
Dopo l'esecuzione di questo comando, l'indice viene «posseduto» dal vincolo, come se l'indice fosse stato creato da un comando normale. `CREATE UNIQUE INDEX ASYNC` In particolare, se si elimina il vincolo, anche l'indice scomparirà.