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ć
CHECKograniczeniami, może to być dowolne z poniższych:falsenooff0
- Aby włączyć
CHECKograniczeniami, może to być dowolne z poniższych:trueyeson1
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.