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
ALTER TABLE modifica la definizione di una tabella.
Sintassi supportata
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 ALTER TABLE ASYNC [ IF EXISTS ] [ ONLY ] name [ * ] VALIDATE CONSTRAINT constraint_name where action is one of: ADD [ COLUMN ] [ IF NOT EXISTS ] column_name data_type [ STORAGE { PLAIN | EXTERNAL | EXTENDED | MAIN | DEFAULT } ] DROP [ COLUMN ] [ IF EXISTS ] column_name [ RESTRICT | CASCADE ] ALTER [ COLUMN ] column_name SET DEFAULT expression ALTER [ COLUMN ] column_name DROP DEFAULT ALTER [ COLUMN ] column_name DROP NOT NULL ALTER [ COLUMN ] column_name DROP EXPRESSION [ IF EXISTS ] ALTER [ COLUMN ] column_name ADD GENERATED { ALWAYS | BY DEFAULT } AS IDENTITY [ ( sequence_options ) ] ALTER [ COLUMN ] column_name { SET GENERATED { ALWAYS | BY DEFAULT } | SET sequence_option | RESTART [ [ WITH ] restart ] } [...] ALTER [ COLUMN ] column_name DROP IDENTITY [ IF EXISTS ] ALTER [ COLUMN ] column_name SET STORAGE { PLAIN | EXTERNAL | EXTENDED | MAIN | DEFAULT } ALTER CONSTRAINT constraint_name [ DEFERRABLE | NOT DEFERRABLE ] [ INITIALLY DEFERRED | INITIALLY IMMEDIATE ] ADD table_constraint NOT VALID ADD table_constraint_using_index DROP CONSTRAINT [ IF EXISTS ] constraint_name [ RESTRICT | CASCADE ] OWNER TO { new_owner | CURRENT_ROLE | CURRENT_USER | SESSION_USER } and table_constraint is: [ CONSTRAINT constraint_name ] { CHECK ( expression ) | FOREIGN KEY ( column_name [, ... ] ) REFERENCES reftable [ ( refcolumn [, ... ] ) ] [ MATCH FULL | MATCH SIMPLE ] [ ON DELETE referential_action ] [ ON UPDATE referential_action ] } [ DEFERRABLE | NOT DEFERRABLE ] [ INITIALLY DEFERRED | INITIALLY IMMEDIATE ] and table_constraint_using_index is: [ CONSTRAINT constraint_name ] UNIQUE USING INDEX index_name and referential_action in a FOREIGN KEY/REFERENCES constraint is: { NO ACTION | RESTRICT | CASCADE | SET NULL [ ( column_name [, ... ] ) ] | SET DEFAULT [ ( column_name [, ... ] ) ] }
Description
ADD [ COLUMN ] [ IF NOT EXISTS ]-
Questo modulo aggiunge una nuova colonna alla tabella, utilizzando la stessa sintassi diCREATE TABLE. Se
IF NOT EXISTSè specificato ed esiste già una colonna con questo nome, non viene generato alcun errore. DROP [ COLUMN ] [ IF EXISTS ]-
Questo modulo elimina una colonna da una tabella. Gli indici e i vincoli di tabella che coinvolgono la colonna verranno eliminati automaticamente ad eccezione dei vincoli di chiave primaria. L'eliminazione delle colonne della chiave primaria non è supportata. Le statistiche multivariate che fanno riferimento alla colonna eliminata verranno rimosse anche se la rimozione della colonna causasse che le statistiche contengano dati per una sola colonna. Dovrai indicare
CASCADEse qualcosa al di fuori della tabella dipende dalla colonna, ad esempio riferimenti o viste a chiavi esterne. SeIF EXISTSè specificato e la colonna non esiste, non viene generato alcun errore. In questo caso viene invece emesso un avviso. SET/DROP DEFAULT-
Questi moduli impostano o rimuovono il valore predefinito per una colonna (dove la rimozione equivale a impostare il valore predefinito su NULL). Il nuovo valore predefinito verrà applicato solo ai
UPDATEcomandi successiviINSERTe non modifica le righe già presenti nella tabella. DROP NOT NULL-
Questo modulo modifica una colonna per consentire valori nulli.
DROP EXPRESSION [ IF EXISTS ]-
Questo modulo trasforma una colonna generata memorizzata in una normale colonna di base. I dati esistenti nelle colonne vengono mantenuti, ma le modifiche future non applicheranno più l'espressione di generazione. Se
DROP EXPRESSION IF EXISTSè specificato e la colonna non è una colonna generata, non viene generato alcun errore. In questo caso viene invece emesso un avviso. ADD GENERATED { ALWAYS | BY DEFAULT } AS IDENTITYSET GENERATED { ALWAYS | BY DEFAULT }DROP IDENTITY [ IF EXISTS ]-
Questi moduli cambiano 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. Ad esempio
SET DEFAULT, questi moduli influiscono solo sul comportamento deiUPDATEcomandi successiviINSERTe non modificano le righe già presenti nella tabella.sequence_optionÈ un'opzione supportata da ALTER SEQUENCEINCREMENT BY. Questi moduli alterano la sequenza che sta alla base di una colonna di identità esistente.Nota
Amazon Aurora DSQL richiede un valore esplicito
CACHEdurante l'utilizzo.ADD GENERATED AS IDENTITYInoltre, le colonne di identità sono supportate solo sulle colonne.bigintQuando si utilizzano le colonne di identità, il valore della cache deve essere considerato attentamente. Per ulteriori informazioni, consulta il callout Importante sulla CREATE SEQUENCE 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à
SET STORAGE { PLAIN | EXTERNAL | EXTENDED | MAIN | DEFAULT }-
Questo modulo imposta la modalità di archiviazione per una colonna. Per i dettagli sulle modalità di archiviazione disponibili, vedere nella Modalità di archiviazione CREATE TABLE pagina.
ALTER CONSTRAINT-
Questo modulo modifica gli attributi di un vincolo di chiave esterna esistente. È possibile modificare un vincolo di chiave esterna compreso tra
DEFERRABLEe eNOT DEFERRABLEimpostare se il valore predefinito è o.INITIALLY DEFERREDINITIALLY IMMEDIATEPer una descrizione di queste opzioni, consulta la Differibilità pagina. CREATE TABLE ADDtable_constraintNOT VALID-
Questo modulo aggiunge un nuovo
FOREIGN KEYvincoloCHECKo a una tabella. In Aurora, DSQLCHECKe iFOREIGN KEYvincoli aggiunti tramiteALTER TABLE ADD CONSTRAINTdevono utilizzare l'opzione.NOT VALIDAurora DSQL crea il vincolo ma non lo convalida immediatamente rispetto ai dati esistenti. Ciò consente di aggiungere il vincolo senza scansionare l'intera tabella. Il vincolo si applica immediatamente a tutte le nuove righe e gli aggiornamenti.Dopo aver aggiunto un vincolo con
NOT VALID, utilizzaloALTER TABLE ASYNC ... VALIDATE CONSTRAINTper convalidare che anche i dati esistenti soddisfino il vincolo. La convalida viene eseguita come processo DDL asincrono. È possibile monitorarne l'avanzamento utilizzando.sys.jobs ADDtable_constraint_using_index-
Questo modulo aggiunge un nuovo
UNIQUEvincolo a una tabella in base a un indice univoco esistente. Tutte le colonne dell'indice verranno incluse nel vincolo.L'indice deve essere in
VALIDuno 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 avrà lo stesso nome dell'indice.
Dopo l'esecuzione di questo comando, l'indice è «posseduto» dal vincolo, come se l'indice fosse stato creato da un comando normale
CREATE UNIQUE INDEX ASYNC. In particolare, l'eliminazione del vincolo farà scomparire anche l'indice. VALIDATE CONSTRAINT-
Questo modulo convalida un vincolo precedentemente creato con l'opzione.
NOT VALIDQuesto comando è un’operazione DDL asincrona che non blocca altre transazioni. Quando si esegue il comandoALTER TABLE ASYNC ... VALIDATE CONSTRAINT, Aurora DSQL restituisce immediatamente unjob_id.È possibile monitorare lo stato di questo processo asincrono utilizzando la vista di sistema
sys.jobs. È inoltre possibile utilizzaresys.wait_for_job(per bloccare la sessione corrente fino al completamento o all'esito negativo della convalida.'job_id')Il processo di convalida analizza l'intera tabella per verificare che tutte le righe esistenti soddisfino il vincolo. Una volta completata con successo la convalida, Aurora DSQL contrassegna il vincolo come valido e il pianificatore di query lo applica a tutte le query. Se la convalida fallisce perché le righe esistenti violano il vincolo, il processo fallisce e il vincolo rimane nello stato.
NOT VALIDQuesto comando convalida solo i vincoli creati con l'opzione.
NOT VALIDSe convalidate un vincolo già valido, Aurora DSQL ha esito positivo senza apportare modifiche. DROP CONSTRAINT [ IF EXISTS ]-
Questo modulo elimina il vincolo specificato su una tabella, insieme a qualsiasi indice sottostante il vincolo. Se
IF EXISTSè specificato e il vincolo non esiste, non viene generato alcun errore. In questo caso viene invece emesso un avviso. OWNER TO-
Questo modulo cambia il proprietario della tabella con l'utente specificato.
RENAME-
I
RENAMEmoduli modificano il nome di una tabella, il nome di una singola colonna in una tabella o il nome di un vincolo della tabella. Quando si rinomina un vincolo che ha un indice sottostante, anche l'indice viene rinominato. Non vi è alcun effetto sui dati archiviati. SET SCHEMA-
Questo modulo sposta la tabella in un altro schema. Vengono spostati anche gli indici, i vincoli e le sequenze associati di proprietà delle colonne della tabella.
Parameters
IF EXISTS-
Non generate un errore se la tabella non esiste. In questo caso viene emesso un avviso.
name-
Il nome (facoltativamente qualificato dallo schema) di una tabella esistente da modificare. Se
ONLYviene specificato prima del nome della tabella, viene modificata solo quella tabella. Se nonONLYè specificato, la tabella e tutte le relative tabelle discendenti (se presenti) vengono modificate. Facoltativamente,*può essere specificato dopo il nome della tabella per indicare esplicitamente che sono incluse le tabelle discendenti. column_name-
Nome di una colonna nuova o esistente.
new_column_name-
Nuovo nome per una colonna esistente.
new_name-
Nuovo nome per la tabella.
data_type-
Tipo di dati della nuova colonna.
table_constraint-
A
CHECKo definizioneFOREIGN KEYdi vincolo. In Aurora DSQL, questi vincoli devono essere aggiunti con l'opzione using.NOT VALIDALTER TABLE ADD CONSTRAINTVedi CREATE TABLE per la sintassi completa dei vincoli. constraint_name-
Nome di un vincolo nuovo o esistente.
CASCADE-
Elimina automaticamente gli oggetti che dipendono dalla colonna o dal vincolo eliminato (ad esempio, le viste che fanno riferimento alla colonna) e, a loro volta, tutti gli oggetti che dipendono da tali oggetti.
RESTRICT-
Rifiuta di eliminare la colonna o il vincolo se sono presenti oggetti dipendenti. Questo è il comportamento che segue di default.
new_owner-
Il nome utente del nuovo proprietario della tabella.
new_schema-
Il nome dello schema in cui verrà spostata la tabella.
Note
Il DROP COLUMN modulo non rimuove fisicamente la colonna, ma la rende semplicemente invisibile alle operazioni SQL. Le successive operazioni di inserimento e aggiornamento nella tabella memorizzeranno un valore nullo per la colonna. Pertanto, l'eliminazione di una colonna è rapida ma non ridurrà immediatamente le dimensioni su disco della tabella, poiché lo spazio occupato dalla colonna eliminata non viene recuperato. Lo spazio verrà recuperato nel tempo man mano che le righe esistenti vengono aggiornate.
Se si fa riferimento a una colonna eliminata come INCLUDE colonna nella chiave primaria, la definizione della chiave primaria verrà aggiornata per rimuovere la colonna eliminata.
Una tabella in Aurora DSQL può avere al massimo 255 colonne attive contemporaneamente e un massimo di 1600 colonne per tutta la durata della tabella. L'eliminazione di una colonna non comporta il recupero del relativo numero di attributo. La rimuove dal set di colonne attive, ma la colonna eliminata continua a contare in base al limite di durata di 1600 colonne. Per ulteriori informazioni, consulta Limiti del database in Aurora DSQL.