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à.
ALTERTABLEesempi
Negli esempi seguenti viene illustrato l'utilizzo di base del ALTER TABLE comando.
Ridenominazione di una tabella o una vista
Il comando seguente rinomina la USERS tabella in USERS _BKUP:
alter table users rename to users_bkup;
Puoi anche usare questo tipo di comando per rinominare una vista.
Modifica del proprietario di una tabella o di una vista
Il comando seguente modifica il proprietario della VENUE tabella in utenteDWUSER:
alter table venue owner to dwuser;
I seguenti comandi creano una vista, quindi cambiano il suo proprietario:
create view vdate as select * from date; alter table vdate owner to vuser;
Ridenominazione di una colonna
Il comando seguente rinomina la VENUESEATS colonna della VENUE tabella inVENUESIZE:
alter table venue rename column venueseats to venuesize;
Rimozione del vincolo di una tabella
Per eliminare un vincolo di tabella, ad esempio una chiave primaria, una chiave esterna o un vincolo univoco, individua innanzitutto il nome interno del vincolo. Specificate quindi il nome del vincolo nel comando. ALTER TABLE L'esempio seguente trova i vincoli per la CATEGORY tabella, quindi rilascia la chiave primaria con il nome. category_pkey
select constraint_name, constraint_type from information_schema.table_constraints where constraint_schema ='public' and table_name = 'category';
constraint_name | constraint_type ----------------+---------------- category_pkey | PRIMARY KEY
alter table category drop constraint category_pkey;
Modificare una colonna VARCHAR
Per risparmiare spazio di archiviazione, puoi definire inizialmente una tabella con VARCHAR colonne con la dimensione minima necessaria per i tuoi attuali requisiti di dati. Successivamente, per utilizzare stringhe più lunghe, è possibile modificare la tabella per aumentare le dimensioni della colonna.
L'esempio seguente aumenta la dimensione della EVENTNAME colonna a VARCHAR (300).
alter table event alter column eventname type varchar(300);
Modifica della codifica di compressione per una colonna
È possibile modificare la codifica di compressione di una colonna. Di seguito è riportata una serie di esempi che dimostrano questo approccio. La definizione di tabella per questi esempi è come segue.
create table t1(c0 int encode lzo, c1 bigint encode zstd, c2 varchar(16) encode lzo, c3 varchar(32) encode zstd);
L'istruzione seguente modifica la codifica di compressione per la colonna c0 da LZO codifica a codifica. AZ64
alter table t1 alter column c0 encode az64;
La seguente istruzione modifica la codifica di compressione per la colonna c1 dalla codifica Zstandard alla codifica. AZ64
alter table t1 alter column c1 encode az64;
L'istruzione seguente modifica la codifica di compressione per la colonna c2 dalla codifica alla codifica Byte-Dictionary. LZO
alter table t1 alter column c2 encode bytedict;
La seguente istruzione modifica la codifica di compressione per la colonna c3 dalla codifica Zstandard alla codifica Runlength.
alter table t1 alter column c3 encode runlength;
Modificare una colonna DISTSTYLE KEY DISTKEY
Gli esempi seguenti mostrano come modificare la fine DISTSTYLE DISTKEY di una tabella.
Crea una tabella con uno stile EVEN di distribuzione. La INFO vista SVV TABLE _ _ mostra che DISTSTYLE èEVEN.
create table inventory( inv_date_sk int4 not null , inv_item_sk int4 not null , inv_warehouse_sk int4 not null , inv_quantity_on_hand int4 ) diststyle even; Insert into inventory values(1,1,1,1); select "table", "diststyle" from svv_table_info;
table | diststyle -----------+---------------- inventory | EVEN
Modifica la tabella DISTKEY ininv_warehouse_sk
. La INFO vista SVV TABLE _ _ mostra la inv_warehouse_sk
colonna come chiave di distribuzione risultante.
alter table inventory alter diststyle key distkey inv_warehouse_sk; select "table", "diststyle" from svv_table_info;
table | diststyle -----------+----------------------- inventory | KEY(inv_warehouse_sk)
Modifica la tabella DISTKEY ininv_item_sk
. La INFO vista SVV TABLE _ _ mostra la inv_item_sk
colonna come chiave di distribuzione risultante.
alter table inventory alter distkey inv_item_sk; select "table", "diststyle" from svv_table_info;
table | diststyle -----------+----------------------- inventory | KEY(inv_item_sk)
Modifica una tabella in DISTSTYLE ALL
Gli esempi seguenti mostrano come modificare una tabella in DISTSTYLEALL.
Crea una tabella con uno stile EVEN di distribuzione. La INFO vista SVV TABLE _ _ mostra che DISTSTYLE èEVEN.
create table inventory( inv_date_sk int4 not null , inv_item_sk int4 not null , inv_warehouse_sk int4 not null , inv_quantity_on_hand int4 ) diststyle even; Insert into inventory values(1,1,1,1); select "table", "diststyle" from svv_table_info;
table | diststyle -----------+---------------- inventory | EVEN
Modifica la tabella DISTSTYLE inALL. La INFO vista SVV TABLE _ _ mostra le modificheDISTSYTLE.
alter table inventory alter diststyle all; select "table", "diststyle" from svv_table_info;
table | diststyle -----------+---------------- inventory | ALL
Modificare una tabella SORTKEY
È possibile modificare una tabella per avere una chiave di ordinamento composta o nessuna chiave di ordinamento.
Nella seguente definizione della tabella, tabella t1
è definita con una chiave di ordinamento interlacciata.
create table t1 (c0 int, c1 int) interleaved sortkey(c0, c1);
Il comando seguente modifica la tabella da una chiave di ordinamento interlacciata a una chiave di ordinamento composta.
alter table t1 alter sortkey(c0, c1);
Il comando seguente modifica la tabella per rimuovere la chiave di ordinamento interlacciata.
alter table t1 alter sortkey none;
Nella seguente definizione della tabella, tabella t1
è definita con una colonna c0
come chiave di ordinamento.
create table t1 (c0 int, c1 int) sortkey(c0);
Il comando seguente modifica la tabella t1
in una chiave di ordinamento composta.
alter table t1 alter sortkey(c0, c1);
Modificare una tabella in ENCODE AUTO
L'esempio seguente mostra come modificare una tabella in ENCODEAUTO.
La definizione di tabella per questo esempio è come segue. c0
La colonna è definita con il tipo di codifica e AZ64 la colonna c1
è definita con il tipo di codifica. LZO
create table t1(c0 int encode AZ64, c1 varchar encode LZO);
Per questa tabella, la seguente istruzione modifica la codifica in. AUTO
alter table t1 alter encode auto;
L'esempio seguente mostra come modificare una tabella per rimuovere l'ENCODEAUTOimpostazione.
La definizione di tabella per questo esempio è come segue. Le colonne della tabella sono definite senza codifica. In questo caso, la codifica predefinita è. ENCODE AUTO
create table t2(c0 int, c1 varchar);
Per questa tabella, l'istruzione seguente modifica la codifica della colonna c0 in. LZO La codifica della tabella non è più impostata su. ENCODE AUTO
alter table t2 alter column c0 encode lzo;;
Modifica del controllo della sicurezza a livello di riga
Il comando seguente viene RLS disattivato per la tabella:
ALTER TABLE tickit_category_redshift ROW LEVEL SECURITY OFF;
Il comando seguente si RLS attiva per la tabella:
ALTER TABLE tickit_category_redshift ROW LEVEL SECURITY ON;
Il comando seguente si attiva RLS per la tabella e la rende accessibile tramite condivisioni di dati:
ALTER TABLE tickit_category_redshift ROW LEVEL SECURITY ON; ALTER TABLE tickit_category_redshift ROW LEVEL SECURITY FOR DATASHARES OFF;
Il comando seguente attiva RLS la tabella e la rende inaccessibile tramite le condivisioni di dati:
ALTER TABLE tickit_category_redshift ROW LEVEL SECURITY ON; ALTER TABLE tickit_category_redshift ROW LEVEL SECURITY FOR DATASHARES ON;
Il comando seguente attiva e imposta il tipo di RLS congiunzione RLS su OR per la tabella:
ALTER TABLE tickit_category_redshift ROW LEVEL SECURITY ON CONJUNCTION TYPE OR;
Il comando seguente attiva e imposta il tipo di RLS congiunzione RLS su AND per la tabella:
ALTER TABLE tickit_category_redshift ROW LEVEL SECURITY ON CONJUNCTION TYPE AND;