sql >> Database >  >> RDS >> SQLite

CHECK-beperkingen in-/uitschakelen in SQLite

Als u ooit alle CHECK . moet in- of uitschakelen beperkingen in SQLite, kunt u de ignore_check_constraints gebruiken PRAGMA-verklaring.

Deze pragmaverklaring schakelt expliciet de handhaving van CHECK . in of uit beperkingen. De standaardinstelling is uit, wat betekent dat CHECK beperkingen worden standaard afgedwongen.

Syntaxis

De syntaxis gaat als volgt:

PRAGMA ignore_check_constraints = boolean;

Waar booleaans is een booleaanse waarde.

  • Om CHECK uit te schakelen beperkingen, kan dit een van de volgende zijn:
    • false
    • no
    • off
    • 0
  • Om CHECK in te schakelen beperkingen, kan dit een van de volgende zijn:
    • true
    • yes
    • on
    • 1

Voorbeeld

Laten we eerst een tabel maken met een CHECK beperking:

CREATE TABLE Products( 
    ProductId INTEGER PRIMARY KEY, 
    ProductName, 
    Price 
    CHECK (Price > 0)
);

Nu kunnen we CHECK schakelen beperkingen aan of uit zoals vereist om die beperking al dan niet af te dwingen.

Controleer beperkingen inschakelen

Hier is een voorbeeld van het inschakelen van alle CHECK beperkingen:

PRAGMA ignore_check_constraints = 0;

Zoals gezegd is dit sowieso de standaardwaarde. Dus als u dit PRAGMA-statement niet gebruikt CHECK beperkingen zijn al op deze waarde ingesteld.

Laten we nu eens testen dat CHECK beperkingen worden in feite mogelijk gemaakt door te proberen gegevens in te voegen die in strijd zijn met die CHECK beperking:

INSERT INTO Products VALUES 
    (NULL, 'Blue Widget', 0.00);

Resultaat:

Error: CHECK constraint failed: Products

Dus de CHECK beperking werd toegepast zoals verwacht.

Check-beperkingen uitschakelen

Hier is een voorbeeld van het uitschakelen van alle CHECK beperkingen:

PRAGMA ignore_check_constraints = 1;

Laten we nu proberen dezelfde gegevens opnieuw in te voeren en het resultaat te selecteren:

INSERT INTO Products VALUES 
    (NULL, 'Blue Widget', 0.00);

SELECT * FROM Products;

Resultaat:

ProductId   ProductName  Price     
----------  -----------  ----------
1           Blue Widget  0.0       

Zoals verwacht zijn de gegevens erin geslaagd de database binnen te komen, ook al schendt het de CHECK beperking.


  1. Hoe Unicode() werkt in SQLite

  2. Optimalisatiedrempels - Gegevens groeperen en aggregeren, deel 4

  3. Een gebruiker in Superuser veranderen in PostgreSQL

  4. Hoe zorgen dat gegevens niet worden gesorteerd?