

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

# `SET CONSTRAINTS`
<a name="set-constraints-syntax-support"></a>

`SET CONSTRAINTS`imposta il comportamento del controllo dei vincoli di chiave esterna all'interno della transazione corrente.

## Sintassi supportata
<a name="set-constraints-supported-syntax"></a>

```
SET CONSTRAINTS { ALL | name [, ...] } { DEFERRED | IMMEDIATE }
```

## Description
<a name="set-constraints-description"></a>

`SET CONSTRAINTS`imposta il comportamento del controllo dei vincoli all'interno della transazione corrente. `IMMEDIATE`i vincoli vengono controllati alla fine di ogni istruzione. `DEFERRED`i vincoli vengono controllati solo dopo il commit della transazione. Ogni vincolo ha una propria modalità. `IMMEDIATE` `DEFERRED`

Quando si crea un vincolo, gli si assegna una delle tre caratteristiche seguenti:`DEFERRABLE INITIALLY DEFERRED`,`DEFERRABLE INITIALLY IMMEDIATE`, o. `NOT DEFERRABLE` La terza classe è sempre `IMMEDIATE` e il `SET CONSTRAINTS` comando non la modifica. Le prime due classi avviano ogni transazione nella modalità indicata, ma il loro comportamento può essere modificato all'interno di una transazione da`SET CONSTRAINTS`.

`SET CONSTRAINTS`con un elenco di nomi di vincoli cambia la modalità solo di tali vincoli. Tutti i vincoli denominati devono essere differibili. `SET CONSTRAINTS ALL`modifica la modalità di tutti i vincoli differibili.

Quando `SET CONSTRAINTS` cambia la modalità di un vincolo da `DEFERRED` a`IMMEDIATE`, la nuova modalità ha effetto retroattivo. Aurora DSQL verifica immediatamente eventuali modifiche ai dati in sospeso che altrimenti sarebbero state rimandate alla fine della transazione. Se uno di questi vincoli viene violato, il `SET CONSTRAINTS` comando ha esito negativo e non modifica la modalità di vincolo.

Per una descrizione delle opzioni di differibilità (`DEFERRABLE`,,,`INITIALLY IMMEDIATE`) `NOT DEFERRABLE``INITIALLY DEFERRED`, vedi nella pagina. [Differibilità](create-table-syntax-support.md#create-table-fk-deferrability) [`CREATE TABLE`](create-table-syntax-support.md)

**Solo vincoli di chiave esterna**  
In Aurora DSQL, `SET CONSTRAINTS` si applica solo ai vincoli di chiave esterna. La chiave primaria, l'univoca e `CHECK` i vincoli vengono sempre controllati immediatamente quando una riga viene inserita o modificata, anche durante l'esecuzione. `NOT NULL` `SET CONSTRAINTS ALL DEFERRED`

## Note
<a name="set-constraints-notes"></a>

Aurora DSQL modifica il comportamento dei vincoli solo all'interno della transazione corrente. Per utilizzarlo`SET CONSTRAINTS`, eseguilo all'interno di un blocco di transazione esplicito.

## Compatibilità
<a name="set-constraints-compatibility"></a>

Questo comando è conforme al comportamento definito nello standard SQL, con la restrizione che Aurora DSQL supporta il differimento solo per i vincoli di chiave esterna.