Se hai bisogno di abilitare o disabilitare tutti i CHECK
vincoli in SQLite, puoi usare ignore_check_constraints Dichiarazione PRAGMA.
Questa istruzione pragma abilita o disabilita esplicitamente l'applicazione di CHECK
vincoli. L'impostazione predefinita è disattivata, il che significa che CHECK
i vincoli vengono applicati per impostazione predefinita.
Sintassi
La sintassi è questa:
PRAGMA ignore_check_constraints = boolean;
Dove booleano è un valore booleano.
- Per disabilitare
CHECK
vincoli, questo può essere uno dei seguenti:false
no
off
0
- Per abilitare
CHECK
vincoli, può essere uno dei seguenti:true
yes
on
1
Esempio
Per prima cosa, creiamo una tabella con un CHECK
vincolo:
CREATE TABLE Products(
ProductId INTEGER PRIMARY KEY,
ProductName,
Price
CHECK (Price > 0)
);
Ora possiamo attivare CHECK
attivare o disattivare i vincoli come richiesto per far rispettare o meno tale vincolo.
Abilita CONTROLLA vincoli
Ecco un esempio di abilitazione di tutti i CHECK
vincoli:
PRAGMA ignore_check_constraints = 0;
Come accennato, questo è comunque il valore predefinito. Quindi, se non usi questa istruzione PRAGMA CHECK
i vincoli saranno già impostati su questo valore.
Ora proviamo quel CHECK
i vincoli sono infatti abilitati tentando di inserire dati che violano quel CHECK
vincolo:
INSERT INTO Products VALUES
(NULL, 'Blue Widget', 0.00);
Risultato:
Error: CHECK constraint failed: Products
Quindi il CHECK
il vincolo è stato applicato come previsto.
Disabilita CONTROLLA vincoli
Ecco un esempio di disabilitazione di tutti i CHECK
vincoli:
PRAGMA ignore_check_constraints = 1;
Ora proviamo a inserire nuovamente gli stessi dati e selezioniamo il risultato:
INSERT INTO Products VALUES
(NULL, 'Blue Widget', 0.00);
SELECT * FROM Products;
Risultato:
ProductId ProductName Price ---------- ----------- ---------- 1 Blue Widget 0.0
Come previsto, i dati sono riusciti ad entrare nel database, pur violando il CHECK
vincolo.