Jeśli kiedykolwiek będziesz musiał włączyć lub wyłączyć wszystkie CHECK
ograniczeń w SQLite, możesz użyć ignore_check_constraints Oświadczenie PRAGMA.
Ta instrukcja pragma wyraźnie włącza lub wyłącza wymuszanie CHECK
ograniczenia. Domyślne ustawienie jest wyłączone, co oznacza, że CHECK
ograniczenia są wymuszane domyślnie.
Składnia
Składnia wygląda tak:
PRAGMA ignore_check_constraints = boolean;
Gdzie wartość logiczna jest wartością logiczną.
- Aby wyłączyć
CHECK
ograniczeniami, może to być dowolne z poniższych:false
no
off
0
- Aby włączyć
CHECK
ograniczeniami, może to być dowolne z poniższych:true
yes
on
1
Przykład
Najpierw utwórzmy tabelę z CHECK
ograniczenie:
CREATE TABLE Products(
ProductId INTEGER PRIMARY KEY,
ProductName,
Price
CHECK (Price > 0)
);
Teraz możemy przełączyć CHECK
włączanie lub wyłączanie ograniczeń zgodnie z wymaganiami, aby wymusić lub nie wymusić tego ograniczenia.
Włącz ograniczenia SPRAWDŹ
Oto przykład włączenia wszystkich opcji CHECK
ograniczenia:
PRAGMA ignore_check_constraints = 0;
Jak wspomniano, i tak jest to wartość domyślna. Więc jeśli nie używasz tej instrukcji PRAGMA CHECK
ograniczenia będą już ustawione na tę wartość.
Teraz przetestujmy to CHECK
ograniczenia są w rzeczywistości włączane przez próbę wstawienia danych, które naruszają to CHECK
ograniczenie:
INSERT INTO Products VALUES
(NULL, 'Blue Widget', 0.00);
Wynik:
Error: CHECK constraint failed: Products
Więc CHECK
ograniczenie zostało wymuszone zgodnie z oczekiwaniami.
Wyłącz ograniczenia SPRAWDŹ
Oto przykład wyłączenia wszystkich funkcji CHECK
ograniczenia:
PRAGMA ignore_check_constraints = 1;
Teraz spróbujmy ponownie wstawić te same dane i wybierz wynik:
INSERT INTO Products VALUES
(NULL, 'Blue Widget', 0.00);
SELECT * FROM Products;
Wynik:
ProductId ProductName Price ---------- ----------- ---------- 1 Blue Widget 0.0
Zgodnie z oczekiwaniami dane udało się wejść do bazy danych, mimo że naruszają one CHECK
ograniczenie.