

 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](https://aws.amazon.com/blogs/big-data/amazon-redshift-python-user-defined-functions-will-reach-end-of-support-after-june-30-2026/). 

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

# DELETE
<a name="r_DELETE"></a>

Elimina le righe dalle tabelle.

**Nota**  
Le dimensioni massime per una istruzione SQL è di 16 MB.

## Sintassi
<a name="r_DELETE-synopsis"></a>

```
[ WITH [RECURSIVE] common_table_expression [, common_table_expression , ...] ]
DELETE [ FROM ] { table_name | materialized_view_name }
    [ { USING } table_name, ... ]
    [ WHERE condition ]
```

## Parameters
<a name="r_DELETE-parameters"></a>

Clausola WITH  
Clausola facoltativa che ne specifica uno o più. *common-table-expressions* Per informazioni, consulta [Clausola WITH](r_WITH_clause.md). 

FROM  
La parola chiave FROM è facoltativa eccetto quando la clausola USING è specificata. Le istruzioni `delete from event;` e `delete event;` sono operazioni equivalenti che rimuovono tutte le righe della tabella EVENT.  
Per eliminare tutte le righe da una tabella, usa il comando [TRUNCATE](r_TRUNCATE.md) sulla tabella. TRUNCATE è molto più efficiente di DELETE e non richiede VACUUM e ANALYZE. Tuttavia, tieni presente che TRUNCATE esegue il commit della transazione in cui viene eseguito.

 *table\_name*   
Tabella temporanea o persistente. Solo il proprietario della tabella o un utente con il privilegio DELETE sulla tabella può eliminare le righe dalla tabella.  
Prendi in considerazione l'utilizzo del comando TRUNCATE per le operazioni di eliminazione rapida non qualificate su tabelle di grandi dimensioni; vedi [TRUNCATE](r_TRUNCATE.md).  
Dopo aver eliminato un numero elevato di righe da una tabella:  
+ Applica l'operazione di vacuum alla tabella per recuperare spazio di memorizzazione e riordinare le righe.
+ Analizza la tabella per aggiornare le statistiche del pianificatore di query.

 *materialized\_view\_name*   
Una vista materializzata. L'istruzione DELETE funziona su una vista materializzata utilizzata per [Importazione in streaming in una vista materializzata](materialized-view-streaming-ingestion.md). Solo il proprietario della vista materializzata o un utente con privilegio DELETE sulla vista materializzata può eliminare righe dalla vista materializzata.  
Non puoi eseguire DELETE su una vista materializzata per l'importazione dati in streaming con una policy di sicurezza a livello di riga (RLS) che non prevede l'autorizzazione IGNORE RLS concessa all'utente. C'è un'eccezione: se all'utente che esegue l'operazione DELETE è stata concessa la licenza IGNORE RLS, l'operazione viene eseguita correttamente. Per ulteriori informazioni, consulta [Proprietà e gestione delle policy RLS](https://docs.aws.amazon.com/redshift/latest/dg/t_rls_ownership.html).

USING *table\_name*, ...  
La parola chiave USING viene utilizzata per introdurre un elenco di tabelle quando si fa riferimento a tabelle aggiuntive nella condizione della clausola WHERE. Ad esempio, la seguente istruzione elimina tutte le righe dalla tabella EVENT che soddisfano la condizione di join sulle tabelle EVENT e SALES. La tabella SALES deve essere esplicitamente citata nell'elenco FROM:  

```
delete from event using sales where event.eventid=sales.eventid;
```
Se ripeti il nome della tabella di destinazione nella clausola USING, l'operazione DELETE esegue un self join. Puoi utilizzare una sottoquery nella clausola WHERE anziché la sintassi USING come metodo alternativo per scrivere la stessa query.

WHERE *condition*   
Clausola facoltativa che limita l'eliminazione delle righe a quelle che corrispondono alla condizione. Ad esempio, la condizione può essere una restrizione su una colonna, una condizione di join o una condizione basata sul risultato di una query. La query può fare riferimento a tabelle diverse da quella di destinazione del comando DELETE. Ad esempio:  

```
delete from t1
where col1 in(select col2 from t2);
```
Se non viene specificata alcuna condizione, vengono eliminate tutte le righe della tabella.

## Note per l’utilizzo
<a name="r_DELETE-usage"></a>
+ Le operazioni DELETE mantengono blocchi esclusivi quando vengono eseguite sulle viste materializzate in streaming di Amazon Redshift connesse a uno dei seguenti elementi:
  +  Un flusso di dati Amazon Kinesis 
  +  Un argomento Streaming gestito da Amazon per Apache Kafka 
  +  Un flusso esterno supportato, ad esempio un argomento Confluent Cloud Kafka 

  Per ulteriori informazioni, consulta [Importazione in streaming in una vista materializzata](materialized-view-streaming-ingestion.md).

## Esempi
<a name="r_DELETE-examples"></a>

Elimina tutte le righe dalla tabella CATEGORY:

```
delete from category;
```

Elimina le righe con valori CATID compresi tra 0 e 9 dalla tabella CATEGORY:

```
delete from category
where catid between 0 and 9;
```

Elimina le righe dalla tabella LISTING i cui valori SELLERID non esistono nella tabella SALES:

```
delete from listing
where listing.sellerid not in(select sales.sellerid from sales);
```

Le due query seguenti eliminano entrambe una riga dalla tabella CATEGORY, in base a un join alla tabella EVENT e a un'ulteriore limitazione sulla colonna CATID:

```
delete from category
using event
where event.catid=category.catid and category.catid=9;
```

```
delete from category
where catid in
(select category.catid from category, event
where category.catid=event.catid and category.catid=9);
```

La seguente query elimina tutte le righe dalla vista materializzata `mv_cities`. Il nome della vista materializzata in questo esempio è un esempio:

```
delete from mv_cities;
```