SQLite
 sql >> Baza danych >  >> RDS >> SQLite

Jak włączyć/wyłączyć ograniczenia CHECK w SQLite?

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.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. dlaczego nie udało mi się utworzyć tej tabeli na Androidzie SQLite?

  2. Zapytanie SQLite w Androidzie za pomocą kursora

  3. SQLiteDiskIOException z kodem błędu 10:błąd we/wy dysku

  4. SQLite LIKE

  5. Jak automatycznie ponownie wysłać zapytanie za pomocą LoaderManager