SQL Constraints
Check Constraintia käytetään määrittämään predikaatti, jonka jokaisen tuplen on täytettävä tietyssä relaatiossa. Se rajoittaa arvoja, joita sarakkeella voi olla relaatiossa.

  • Tarkistusrajoituksen predikaatti voi pitää sisällään alikyselyn.
  • Aattribuutille määritetty tarkistusrajoitus rajoittaa kyseisen attribuutin arvoaluetta.
  • Jos tuplen attribuuttiin lisättävä arvo on tarkistusrajoituksen vastainen, tarkistusrajoitus evaluoituu epätosiarvoiseksi (false), ja sitä vastaava päivitys keskeytetään.
  • Tarkistusrajoitus määritetään yleensä SQL:n CREATE TABLE-komennolla.

Syntaksi:

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

Huomautus: Yllä olevan SQL-komennon tarkistusrajoitus rajoittaa GENDERin kuulumaan vain määriteltyihin luokkiin. Jos suhteeseen lisätään uusi tuple tai olemassa olevaa tuplea päivitetään GENDERillä, joka ei kuulu mihinkään mainituista kolmesta kategoriasta, vastaava tietokannan päivitys keskeytetään.

Query

Constraint: Vain opiskelijat, joiden ikä >= 17 on, voivat ilmoittautua yliopistoon.
Skeema yliopiston opiskelijatietokannalle:

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

Opiskelija-suhde:

.

StudentID Name Age Gender
1001 Ron 18 Mies
1002 Sam 17 Mies
1003 Georgia 17 Nainen
1004 Erik 19 Tuntematon
1005 Christine 17 Naaras

Erittely: Yllä olevassa relaatiossa kaikkien opiskelijoiden ikä on suurempi kuin yhtä suuri kuin 17 vuotta, relaation skeeman tarkistuslausekkeessa mainitun rajoituksen mukaan. Jos kuitenkin suoritetaan seuraava SQL-lause:

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

Tietokantaa ei päivitetä ja koska ikä < 17 vuotta.

Vaihtoehtoja Check-rajoituksen käyttämiseen:

  • Alterilla: Check constraint voidaan lisätä myös jo luotuun relaatioon käyttämällä syntaksia:
    alter table TABLE_NAME modify COLUMN_NAME check(Predicate);
  • Muuttujan nimen antaminen check constraintille: Check constraintille voidaan antaa muuttujan nimi käyttämällä syntaksia:
    alter table TABLE_NAME add constraint CHECK_CONST check (Predicate);
  • Remove check constraint: Tarkistusrajoitus voidaan poistaa SQL-palvelimen tietokannassa olevasta relaatiosta käyttämällä syntaksia:
    alter table TABLE_NAME drop constraint CHECK_CONSTRAINT_NAME;
  • Drop check constraint: Tarkistusrajoitus voidaan poistaa MySQL-tietokannan relaatiosta käyttämällä syntaksia:
    alter table TABLE_NAME drop check CHECK_CONSTRAINT_NAME;

Tämän artikkelin on kirjoittanut Mayank Kumar. Jos pidät GeeksforGeeksistä ja haluat osallistua, voit myös kirjoittaa artikkelin osoitteessa contribute.geeksforgeeks.org tai lähettää artikkelisi sähköpostitse osoitteeseen [email protected]. Näet artikkelisi näkyvän GeeksforGeeksin pääsivulla ja autat muita nörttejä.

Vastaa

Sähköpostiosoitettasi ei julkaista.