Tartalomjegyzék

< Adatbázis-kezelés

Megszorítások

A megszorításokról

Korlátozás vagy angolosan constraint.

Az adatbázis-megszorítások célja a helytelen rekordok létrejöttének megakadályozása.

Megszorítások eszközei

Megszorítások SQL-ben

kulcs

PRIMARY KEY
create table osztalyok(
    az int not null primary key auto_increment,
    nev varchar(50)
);

Egyediségi kényszer:

UNIQUE
create table dolgozok (
    az int not null primary key auto_increment,
    ig varchar(10) unique,
    nev varchar(50)
);

idegen kulcs

Az idegenkulcsok általános szintaxisa:

[CONSTRAINT [szimbólum]] FOREIGN KEY
    [index_nev] (index_oszlop_nev, ...)
    REFERENCES tábla_név (index_oszlop_név,...)
    [ON DELETE hivatkozás_kapcsoló]
    [ON UPDATE hivatkozás_kapcsoló]

hivatkozás_kapcsoló:
    RESTRICT | CASCADE | SET NULL | NO ACTION

Egyszerűbben:

FOREIGN KEY (<attribútumok>) REFERENCES <tábla>  (<attribútumok>)

Példa:

create table osztalyok(
    az int not null primary key auto_increment,
    nev varchar(50)
);
 
create table dolgozok(
    az int not null primary key auto_increment,
    nev varchar(50),
    osztalyAz int,
    foreign key (osztalyAz) references osztalyok (az)
);
create table osztalyok(
    az int not null primary key auto_increment,
    nev varchar(50)
);
 
create table dolgozok(
    az int not null primary key auto_increment,
    nev varchar(50),
    osztalyAz int,
    constraint dolgozok_megkotes
        foreign key (osztalyAz) 
        references osztalyok (az)
);

Hivatkozáskapcsolók:

create table osztalyok(
    az int not null primary key auto_increment,
    nev varchar(50)
);
 
create table dolgozok(
    az int not null primary key auto_increment,
    nev varchar(50),
    osztalyAz int,
    constraint dolgozok_megkotes
        foreign key (osztalyAz) 
        references osztalyok (az)
        on delete cascade
        on update cascade
);

attribútum értékére vonatkozó megszorítások

Nem lehet NULL feltételek

NOT NULL

Bonyolultabb meghatározások:

CHECK ...

Új érték esetén ellenőriz.

Érték tartományra való megszorítások

create table telepuleseink (
    telepules varchar(50) check (telepules in ('Miskolc', 'Szolnok'))
);

Felvenni csak Miskolc és Szolnok települést lehet.

globális megszorítások

Sorra vonatkozó

CHECK ...

Több mező:

create table szamok (
    szam1 int check (szam1 >= 5),
    szam2 int check (szam2 >= 5),
    constraint nagyobb check (szam1>szam2)
);

Egy rekordon belül a szam1-nek nagyobbnak kell lenni, szam2.