SQL Constraints
Check Constraint egy olyan predikátum megadására szolgál, amelynek egy adott relációban minden tupelnek meg kell felelnie. Korlátozza azokat az értékeket, amelyeket egy oszlop tartalmazhat egy relációban.

  • Az ellenőrző megkötés predikátuma egy alkérdést tartalmazhat.
  • Az attribútumra definiált ellenőrző megkötés korlátozza az adott attribútum értéktartományát.
  • Ha egy tuple attribútumához hozzáadott érték sérti az ellenőrző megkötést, az ellenőrző megkötés hamis értéket kap, és a megfelelő frissítés megszakad.
  • Az ellenőrző megkötést általában az SQL-ben a CREATE TABLE paranccsal adjuk meg.

Szintaktika:

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

Megjegyzés: A fenti SQL-parancsban szereplő ellenőrző megkötés a GENDER-t csak a megadott kategóriákba való tartozásra korlátozza. Ha a relációban egy új tuple-t adunk hozzá vagy egy meglévő tuple-t frissítünk olyan GENDER-rel, amely nem tartozik az említett három kategória egyikébe sem, akkor a megfelelő adatbázis-frissítés megszakad.

Kérdés

Kényszer: Csak a >= 17 éves diákok iratkozhatnak be egy egyetemre.
Séma az egyetemi hallgatói adatbázishoz:

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

Diák reláció:

.

StudentID Név Kor Gender
1001 Ron 18 Férfi
1002 Sam 17 Férfi
1003 Georgia 17
1004 Erik 19 Nem ismert
1005 Christine 17

Magyarázat: A fenti relációban az összes diák életkora nagyobb, mint 17 év, a reláció sémájában szereplő ellenőrző utasításban említett megkötés szerint. Ha azonban a következő SQL utasítást hajtjuk végre:

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

Nem lesz adatbázis-frissítés, és mivel az életkor < 17 év.

Az Ellenőrző megkötés használatának különböző lehetőségei:

  • Az alter: Ellenőrző megkötés már létrehozott relációhoz is hozzáadható a következő szintaxissal:
    alter table TABLE_NAME modify COLUMN_NAME check(Predicate);
  • Változó nevet adni az ellenőrző megkötésnek:Az ellenőrző megkötéseknek változó nevet adhatunk a következő szintaxissal:
    alter table TABLE_NAME add constraint CHECK_CONST check (Predicate);
  • Ellenőrző megkötés eltávolítása: Az SQL-kiszolgáló adatbázisában lévő relációból az ellenőrző megkötés a következő szintaxissal távolítható el:
    alter table TABLE_NAME drop constraint CHECK_CONSTRAINT_NAME;
  • Ellenőrző megkötés elhagyása: A MySQL-adatbázisban lévő relációból a következő szintaxissal törölhető az ellenőrző megkötés:
    alter table TABLE_NAME drop check CHECK_CONSTRAINT_NAME;

Ez a cikk Mayank Kumar hozzájárulása. Ha tetszik a GeeksforGeeks és szeretnél hozzájárulni, írhatsz cikket a contribute.geeksforgeeks.org címen, vagy elküldheted a cikkedet a [email protected] címre. Láthatod, hogy a cikked megjelenik a GeeksforGeeks főoldalán, és segíthetsz más geekeknek.

Vélemény, hozzászólás?

Az e-mail-címet nem tesszük közzé.