sql >> Databasteknik >  >> RDS >> SQLite

Hur man aktiverar/inaktiverar CHECK-begränsningar i SQLite

Om du någonsin behöver aktivera eller inaktivera alla CHECK begränsningar i SQLite kan du använda ignore_check_constraints PRAGMA uttalande.

Detta pragmauttalande aktiverar eller inaktiverar uttryckligen tillämpningen av CHECK begränsningar. Standardinställningen är av, vilket betyder att CHECK begränsningar upprätthålls som standard.

Syntax

Syntaxen ser ut så här:

PRAGMA ignore_check_constraints = boolean;

Där boolesk är ett booleskt värde.

  • För att inaktivera CHECK begränsningar kan detta vara något av följande:
    • false
    • no
    • off
    • 0
  • För att aktivera CHECK begränsningar kan detta vara något av följande:
    • true
    • yes
    • on
    • 1

Exempel

Låt oss först skapa en tabell med en CHECK begränsning:

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

Nu kan vi växla mellan CHECK begränsningar på eller av efter behov för att antingen genomdriva eller inte genomdriva den begränsningen.

Aktivera CHECK-begränsningar

Här är ett exempel på hur du aktiverar alla CHECK begränsningar:

PRAGMA ignore_check_constraints = 0;

Som nämnts är detta standardvärdet ändå. Så om du inte använder denna PRAGMA-sats CHECK begränsningar kommer redan att vara inställda på detta värde.

Låt oss nu testa den CHECK begränsningar är i själva verket aktiverade genom att försöka infoga data som bryter mot den CHECK begränsning:

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

Resultat:

Error: CHECK constraint failed: Products

CHECK begränsning tillämpades som förväntat.

Inaktivera CHECK-begränsningar

Här är ett exempel på hur du inaktiverar alla CHECK begränsningar:

PRAGMA ignore_check_constraints = 1;

Låt oss nu försöka infoga samma data igen och välj resultatet:

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

SELECT * FROM Products;

Resultat:

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

Som förväntat lyckades data komma in i databasen, trots att den bryter mot CHECK begränsning.


  1. Skillnaden mellan sys.views, sys.system_views och sys.all_views i SQL Server

  2. SQL NOT Operator för nybörjare

  3. UPPDATERAD:Bugg orsakar att Microsoft Office 365 Build 2105 bryter åtkomstapplikationer

  4. mySQL subquery limit