Esempi di ALTER TABLE - Amazon Redshift

Amazon Redshift non supporterà più la creazione di nuovi Python UDFs a partire dalla Patch 198. Python esistente UDFs continuerà a funzionare fino al 30 giugno 2026. Per ulteriori informazioni, consulta il post del blog.

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

Esempi di ALTER TABLE

I seguenti esempi dimostrano l'utilizzo di base del comando ALTER TABLE.

Ridenominazione di una tabella o una vista

Il seguente comando rinomina la tabella USERS 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 seguente comando modifica il proprietario della tabella VENUE nell'utente DWUSER:

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 seguente comando rinomina la colonna VENUESEATS della tabella VENUE in VENUESIZE:

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. Poi specifica il nome del vincolo nel comando ALTER TABLE. L'esempio seguente trova i vincoli per la tabella CATEGORY, quindi rimuove 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 preservare lo storage, è possibile definire una tabella inizialmente con colonne VARCHAR con la dimensione minima necessaria per i requisiti di dati attuali. Successivamente, per utilizzare stringhe più lunghe, è possibile modificare la tabella per aumentare le dimensioni della colonna.

L'esempio seguente aumenta le dimensioni della colonna EVENTNAME in VARCHAR(300).

alter table event alter column eventname type varchar(300);

Modificare una colonna VARBYTE

Per preservare l’archiviazione, puoi definire una tabella inizialmente con colonne VARBYTE con la dimensione minima necessaria per i requisiti di dati attuali. Successivamente, per utilizzare stringhe più lunghe, è possibile modificare la tabella per aumentare le dimensioni della colonna.

L’esempio seguente aumenta le dimensioni della colonna EVENTNAME in VARBYTE(300).

alter table event alter column eventname type varbyte(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 dalla codifica LZO alla codifica. AZ64

alter table t1 alter column c0 encode az64;

L'istruzione seguente modifica la codifica di compressione per la colonna c1 dalla codifica Zstandard alla codifica. AZ64

alter table t1 alter column c1 encode az64;

La seguente istruzione modifica la codifica di compressione per la colonna c2 dalla codifica LZO alla codifica Byte-Dictionary.

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

I seguenti esempi mostrano come modificare DISTSTYLE e DISTKEY di una tabella.

Crea una tabella con stile di distribuzione EVEN. La vista SVV_TABLE_INFO 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

Modificare la tabella DISTKEY in inv_warehouse_sk. La vista SVV_TABLE_INFO mostra la colonna inv_warehouse_sk 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)

Modificare la tabella DISTKEY in inv_item_sk. La vista SVV_TABLE_INFO mostra la colonna inv_item_sk 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)

Modificare una tabella in DISTSTYLE ALL

Gli esempi seguenti mostrano come modificare una tabella in DISTSTYLE ALL.

Crea una tabella con stile di distribuzione EVEN. La vista SVV_TABLE_INFO 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

Modificare la tabella DISTSTYLE su ALL. La vista SVV_TABLE_INFO mostra il DISTSYTLE modificato.

alter table inventory alter diststyle all; select "table", "diststyle" from svv_table_info; table | diststyle -----------+---------------- inventory | ALL

Modifica 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);

Modifica di una tabella in ENCODE AUTO

L'esempio seguente mostra come modificare una tabella in ENCODE AUTO.

La definizione di tabella per questo esempio è come segue. c0La colonna è definita con il tipo di codifica e la colonna c1 è definita con il tipo di AZ64 codifica LZO.

create table t1(c0 int encode AZ64, c1 varchar encode LZO);

Per questa tabella, l'istruzione seguente modifica la codifica in AUTO.

alter table t1 alter encode auto;

L'esempio seguente mostra come modificare una tabella per rimuovere l'impostazione ENCODE AUTO.

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, la seguente istruzione 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 seguente comando disattiva RLS per la tabella:

ALTER TABLE tickit_category_redshift ROW LEVEL SECURITY OFF;

Il seguente comando disattiva RLS (sicurezza a livello di riga) per la tabella:

ALTER TABLE tickit_category_redshift ROW LEVEL SECURITY ON;

Il seguente comando attiva RLS per la tabella e la rende accessibile nell'unità di condivisione dati:

ALTER TABLE tickit_category_redshift ROW LEVEL SECURITY ON; ALTER TABLE tickit_category_redshift ROW LEVEL SECURITY FOR DATASHARES OFF;

Il seguente comando attiva RLS per la tabella e la rende inaccessibile nell'unità di condivisione dati:

ALTER TABLE tickit_category_redshift ROW LEVEL SECURITY ON; ALTER TABLE tickit_category_redshift ROW LEVEL SECURITY FOR DATASHARES ON;

Il seguente comando attiva RLS e imposta il tipo di combinazione RLS su OR per la tabella:

ALTER TABLE tickit_category_redshift ROW LEVEL SECURITY ON CONJUNCTION TYPE OR;

Il seguente comando attiva RLS e imposta il tipo di combinazione RLS su AND per la tabella:

ALTER TABLE tickit_category_redshift ROW LEVEL SECURITY ON CONJUNCTION TYPE AND;