SQL Constraints
Check Constraint används för att ange ett predikat som varje tupel måste uppfylla i en given relation. Det begränsar de värden som en kolumn kan innehålla i en relation.
- Predikatet i check constraint kan innehålla en underfråga.
- Check constraint som definieras på ett attribut begränsar intervallet av värden för det attributet.
- Om det värde som läggs till ett attribut i en tupel bryter mot check constraint utvärderas check constraint till false och motsvarande uppdatering avbryts.
- Check constraint specificeras i allmänhet med kommandot CREATE TABLE i SQL.
Syntax:
CREATE TABLE pets( ID INT NOT NULL, Name VARCHAR(30) NOT NULL, Breed VARCHAR(20) NOT NULL, Age INT, GENDER VARCHAR(9), PRIMARY KEY(ID), check(GENDER in ('Male', 'Female', 'Unknown')) );
Notera: Check constraint i SQL-kommandot ovan begränsar GENDER till att endast tillhöra de angivna kategorierna. Om en ny tupel läggs till eller en befintlig tupel i relationen uppdateras med en GENDER som inte tillhör någon av de tre nämnda kategorierna avbryts motsvarande databasuppdatering.
Query
Constraint: Endast studenter som är >= 17 år kan skriva in sig på ett universitet.
Schema för studentdatabas på universitet:
CREATE TABLE student( StudentID INT NOT NULL, Name VARCHAR(30) NOT NULL, Age INT NOT NULL, GENDER VARCHAR(9), PRIMARY KEY(ID), check(Age >= 17) );
Studentrelation:
StudentID | Namn | Ålder | Genus |
---|---|---|---|
1001 | Ron | 18 | man |
1002 | Sam | 17 | man |
1003 | Georgia | 17 | Kvinnlig |
1004 | Erik | 19 | Unknown |
1005 | Christine | 17 | Female |
Förklaring: I ovanstående relation är alla studenters ålder större än 17 år, enligt den begränsning som nämns i kontrollförklaringen i relationens schema. Om följande SQL-anvisning utförs:
INSERT INTO student(STUDENTID, NAME, AGE, GENDER) VALUES (1006, 'Emma', 16, 'Female');
Det kommer inte att ske någon uppdatering av databasen och eftersom åldern < 17 år.
Differenta alternativ för att använda Check constraint:
- Med alter: Check constraint kan också läggas till en redan skapad relation med hjälp av syntaxen:
alter table TABLE_NAME modify COLUMN_NAME check(Predicate);
- Ge variabelnamn till check constraint:Check constraints kan ges ett variabelnamn med hjälp av syntaxen:
alter table TABLE_NAME add constraint CHECK_CONST check (Predicate);
- Ta bort check constraint: Check constraint kan tas bort från relationen i databasen från SQL Server med hjälp av syntaxen:
alter table TABLE_NAME drop constraint CHECK_CONSTRAINT_NAME;
- Drop check constraint: Kontrollbegränsning kan tas bort från relationen i databasen från SQL Server med hjälp av syntaxen:
alter table TABLE_NAME drop constraint CHECK_CONSTRAINT_NAME;
- Drop check constraint: Check constraint kan tas bort från relationen i databasen i MySQL med hjälp av syntaxen:
alter table TABLE_NAME drop check CHECK_CONSTRAINT_NAME;
Denna artikel har bidragits av Mayank Kumar. Om du gillar GeeksforGeeks och vill bidra kan du också skriva en artikel via contribute.geeksforgeeks.org eller maila din artikel till [email protected]. Se din artikel dyka upp på GeeksforGeeks huvudsida och hjälp andra Geeks.