sql >> Database teknologi >  >> RDS >> SQLite

Sådan aktiveres/deaktiveres CHECK-begrænsninger i SQLite

Hvis du nogensinde har brug for at aktivere eller deaktivere alle CHECK begrænsninger i SQLite, kan du bruge ignore_check_constraints PRAGMA-udsagn.

Denne pragmaerklæring aktiverer eller deaktiverer eksplicit håndhævelsen af ​​CHECK begrænsninger. Standardindstillingen er slået fra, hvilket betyder at CHECK begrænsninger håndhæves som standard.

Syntaks

Syntaksen ser sådan ud:

PRAGMA ignore_check_constraints = boolean;

Hvor boolesk er en boolesk værdi.

  • For at deaktivere CHECK begrænsninger, kan dette være en af ​​følgende:
    • false
    • no
    • off
    • 0
  • For at aktivere CHECK begrænsninger, kan dette være en af ​​følgende:
    • true
    • yes
    • on
    • 1

Eksempel

Lad os først oprette en tabel med en CHECK begrænsning:

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

Nu kan vi skifte CHECK begrænsninger til eller fra efter behov for enten at håndhæve eller ikke håndhæve denne begrænsning.

Aktiver CHECK-begrænsninger

Her er et eksempel på aktivering af alle CHECK begrænsninger:

PRAGMA ignore_check_constraints = 0;

Som nævnt er dette alligevel standardværdien. Så hvis du ikke bruger denne PRAGMA-sætning CHECK begrænsninger vil allerede være indstillet til denne værdi.

Lad os nu teste den CHECK begrænsninger er faktisk aktiveret ved at forsøge at indsætte data, der overtræder denne CHECK begrænsning:

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

Resultat:

Error: CHECK constraint failed: Products

CHECK begrænsning blev håndhævet som forventet.

Deaktiver CHECK-begrænsninger

Her er et eksempel på deaktivering af alle CHECK begrænsninger:

PRAGMA ignore_check_constraints = 1;

Lad os nu prøve at indsætte de samme data igen og vælge resultatet:

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

SELECT * FROM Products;

Resultat:

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

Som forventet lykkedes det for data at komme ind i databasen, selvom det overtræder CHECK begrænsning.


  1. Hvordan nulstiller jeg mysql root adgangskode?

  2. Brug af ADO asynkront i Microsoft Access for at fremskynde formularer

  3. SQL, Håndtering af tomme celler

  4. hvordan man eksporterer data fra log-tabel til e-mail-body i oracle