SQL Constraints
Check Constraint jest używany do określenia predykatu, który musi spełniać każda krotka w danej relacji. Ogranicza wartości, które kolumna może posiadać w relacji.

  • Predykat w ograniczeniu sprawdzającym może zawierać podzapytanie.
  • Konwencja sprawdzająca zdefiniowana na atrybucie ogranicza zakres wartości dla tego atrybutu.
  • Jeśli wartość dodawana do atrybutu krotki narusza ograniczenie sprawdzające, ograniczenie sprawdzające przyjmuje wartość false i odpowiednia aktualizacja zostaje przerwana.
  • Konstrykcja sprawdzająca jest zazwyczaj określana za pomocą polecenia CREATE TABLE w SQL.

Syntaktyka:

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')) );

Uwaga: Ograniczenie sprawdzające w powyższym poleceniu SQL ogranicza GENDER do przynależności tylko do określonych kategorii. Jeśli nowa krotka zostanie dodana lub istniejąca krotka w relacji zostanie zaktualizowana o GENDER, który nie należy do żadnej z trzech wymienionych kategorii, wtedy odpowiednia aktualizacja bazy danych zostanie przerwana.

Query

Constraint: Tylko studenci w wieku >= 17 lat mogą zapisać się na studia.
Schemat dla bazy danych studentów w uczelni:

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) );

Relacja student:

.

StudentID Name Age Gender
1001 Ron 18 Mężczyzna
1002 Sam 17 Mężczyzna
1003 Georgia 17 Kobieta
1004 Erik 19 Nieznany
1005 Krystyna 17 Kobieta

Wyjaśnienie: W powyższej relacji, wiek wszystkich studentów jest większy niż równy 17 lat, zgodnie z ograniczeniem wymienionym w instrukcji check w schemacie relacji. Jeśli jednak zostanie wykonana następująca instrukcja SQL:

INSERT INTO student(STUDENTID, NAME, AGE, GENDER) VALUES (1006, 'Emma', 16, 'Female');

Nie będzie żadnej aktualizacji bazy danych i jako wiek < 17 lat.

Różne opcje użycia ograniczenia sprawdzającego:

  • Z alter: Check constraint można również dodać do już utworzonej relacji używając składni:
    alter table TABLE_NAME modify COLUMN_NAME check(Predicate);
  • Nadawanie zmiennej nazwy check constraint:Check constraint można nadać zmienną nazwę używając składni:
    alter table TABLE_NAME add constraint CHECK_CONST check (Predicate);
  • Remove check constraint: Check constraint może zostać usunięty z relacji w bazie danych z serwera SQL za pomocą składni:
    alter table TABLE_NAME drop constraint CHECK_CONSTRAINT_NAME;
  • Drop check constraint: Ograniczenie może zostać usunięte z relacji w bazie danych MySQL za pomocą składni:
    alter table TABLE_NAME drop check CHECK_CONSTRAINT_NAME;

Ten artykuł został napisany przez Mayank Kumar. Jeśli podoba Ci się GeeksforGeeks i chciałbyś się do niego przyczynić, możesz również napisać artykuł używając contribute.geeksforgeeks.org lub wysłać swój artykuł na adres [email protected]. Zobacz, jak twój artykuł pojawia się na stronie głównej GeeksforGeeks i pomóż innym Geekom.

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany.