SQL FOREIGN KEY cheklovi
SQL FOREIGN KEY cheklovi
FOREIGN KEY cheklovi ikkita o‘rtasida bog‘lanishni o‘rnatadi
jadvallar va ular orasidagi aloqani buzadigan harakatlarning oldini oladi.
FOREIGN KEY - bu jadvaldagi ustun
boshqa jadvaldagi PRIMARY KEY.
Xorijiy kalit ustuni bo‘lgan jadval do‘st jadval, asosiy kalit ustuni bo‘lgan jadval esa havola qilingan yoki asosiy jadval deb ataladi.
FOREIGN KEY cheklovi tashqi kalit ustuniga (bola jadvalda) noto‘g‘ri ma’lumotlar kiritilishining oldini oladi, chunki qiymat ota jadvalda mavjud bo‘lishi shart.
FOREIGN KEY cheklovi ham sizni oldini oladi
Agar tegishli qatorlar hali ham mavjud bo‘lsa, ota-jadvaldagi yozuvni o‘chirishdan
bolalar stoli.
Faraz qilaylik, bizda ikkita jadval bor:
"Persons" jadvali
| PersonID | LastName | FirstName | Age |
|---|---|---|---|
| 1 | Hansen | Ola | 30 |
| 2 | Svendson | Tove | 23 |
Orders jadvali
| OrderID | OrderNumber | PersonID |
|---|---|---|
| 3 | 22456 | 2 |
| 4 | 24562 | 1 |
Bu yerda "Orders" jadvalidagi "PersonID" ustuni "Persons" jadvalidagi "PersonID" ustuniga ishora qilayotganini ko‘ramiz.
"Shaxslar" jadvalidagi "Shaxs identifikatori" ustuni "Shaxslar" jadvalidagi PRIMARY KEY hisoblanadi.
"Orders" jadvalidagi "PersonID" ustuni "Orders" jadvalidagi
FOREIGN KEY hisoblanadi.
FOREIGN KEY on CREATE TABLE
Quyidagi SQL "Orders" jadvalini yaratishda "PersonID" ustunida FOREIGN KEY cheklovini yaratadi:
CREATE TABLE Orders
(
OrderID int PRIMARY KEY,
OrderNumber int NOT NULL,
PersonID int,
CONSTRAINT fk_Person
FOREIGN KEY (PersonID)
REFERENCES Persons(PersonID)
);FOREIGN KEY on ALTER TABLE
"Orders" jadvali yaratilgandan so‘ng "PersonID" ustunida FOREIGN KEY cheklovini yaratish uchun quyidagi SQL dan foydalaning:
ALTER TABLE Orders
ADD CONSTRAINT fk_Person
FOREIGN KEY (PersonID)
REFERENCES Persons(PersonID);FOREIGN KEY cheklovini o‘chirish
FOREIGN KEY cheklovini o‘chirish uchun quyidagi SQL’dan foydalaning:
SQL Server / Oracle / MS Access:
ALTER TABLE Orders
DROP CONSTRAINT fk_Person;MySQL:
ALTER TABLE Orders
DROP FOREIGN KEY fk_Person;W3Schools Pathfinder
Yutuqlaringizni kuzating – bu bepul!
