Ichki va tashqi kalitlarni o‘rnatish va standart qiymatlarni belgilash operatorlaridan foydalanish


Download 57.2 Kb.
bet2/2
Sana06.11.2023
Hajmi57.2 Kb.
#1750469
1   2
Bog'liq
21-Ichki va tashqi kalitlarni o

kompozit kalit deb ataladi .
Agar jadval biron-bir maydon(lar)da aniqlangan asosiy kalitga ega bo'lsa, u holda siz ushbu maydon(lar)ning qiymati bir xil bo'lgan ikkita yozuvga ega bo'lolmaysiz.
Misol
Yuqorida siz birlamchi kalit sifatida ID-ga ega COMAPNY4 jadvalini yaratgan turli misollarni allaqachon ko'rgansiz -
CREATE TABLE COMPANY4(
ID INT PRIMARY KEY NOT NULL,
NAME TEXT NOT NULL,
AGE INT NOT NULL,
ADDRESS CHAR(50),
SALARY REAL
);
FOREIGN KEY Cheklov
Chet el kalit cheklovi ustundagi (yoki ustunlar guruhidagi) qiymatlar boshqa jadvalning qaysidir qatorida ko'rsatilgan qiymatlarga mos kelishi kerakligini bildiradi. Biz shuni aytamizki, bu ikkita bog'liq jadval o'rtasidagi mos yozuvlar yaxlitligini saqlaydi. Cheklovlar FOREIGNy bo'lgani uchun ular chet el kalitlari deb ataladi; ya'ni stoldan tashqarida. Chet el kalitlari ba'zan havola kaliti deb ataladi.
Misol
Masalan, quyidagi PostgreSQL bayonoti COMPANY5 deb nomlangan yangi jadval yaratadi va beshta ustun qo'shadi.
CREATE TABLE COMPANY5(
ID INT PRIMARY KEY NOT NULL,
NAME TEXT NOT NULL,
AGE INT NOT NULL,
ADDRESS CHAR(50),
SALARY REAL
);
Misol uchun, quyidagi PostgreSQL bayonoti uchta ustun qo'shadigan DEPARTMENT1 deb nomlangan yangi jadvalni yaratadi. EMP_ID ustuni tashqi kalit bo'lib, COMPANY6 jadvalining ID maydoniga havola qiladi.
CREATE TABLE DEPARTMENT1(
ID INT PRIMARY KEY NOT NULL,
DEPT CHAR(50) NOT NULL,
EMP_ID INT references COMPANY6(ID)
);
Cheklovni tekshiring
CHECK cheklovi yozuvga kiritilayotgan qiymatni tekshirish shartini beradi. Agar shart noto'g'ri deb baholansa, yozuv cheklovni buzadi va jadvalga kiritilmaydi.
Misol
Masalan, quyidagi PostgreSQL bayonoti COMPANY5 deb nomlangan yangi jadval yaratadi va beshta ustun qo'shadi. Bu yerda biz CHEK ISHLAB CHIQISH ustunini qo'shamiz, shunda sizda hech qanday ish haqi nolga teng bo'lmaydi.
CREATE TABLE COMPANY5(
ID INT PRIMARY KEY NOT NULL,
NAME TEXT NOT NULL,
AGE INT NOT NULL,
ADDRESS CHAR(50),
SALARY REAL CHECK(SALARY > 0)
);
EXCLUSION Cheklov
Istisno cheklovlari, agar ikkita satr belgilangan operatorlar yordamida belgilangan ustunlar yoki iboralar bo'yicha taqqoslansa, ushbu operator taqqoslashlaridan kamida bittasi noto'g'ri yoki null bo'lishini ta'minlaydi.
Misol
Misol uchun, quyidagi PostgreSQL bayonoti COMPANY7 deb nomlangan yangi jadval yaratadi va beshta ustun qo'shadi. Bu erda biz EXCLUDE cheklovini qo'shamiz -
CREATE TABLE COMPANY7(
ID INT PRIMARY KEY NOT NULL,
NAME TEXT,
AGE INT ,
ADDRESS CHAR(50),
SALARY REAL,
EXCLUDE USING gist
(NAME WITH =,
AGE WITH <>)
);
Bu yerda ISING Gist - bu yaratish va ijro etish uchun foydalanish uchun indeks turi.
Har bir ma'lumotlar bazasida bir marta btree_gist CREATE EXTENSION buyrug'ini bajarishingiz kerak . Bu oddiy skaler ma'lumotlar turlari bo'yicha istisno cheklovlarini belgilaydigan btree_gist kengaytmasini o'rnatadi.
Biz yoshni bir xil bo'lishi kerakligini ta'kidlaganimiz sababli, jadvalga yozuvlarni kiritish orqali buni ko'rib chiqaylik -
INSERT INTO COMPANY7 VALUES(1, 'Paul', 32, 'California', 20000.00 );
INSERT INTO COMPANY7 VALUES(2, 'Paul', 32, 'Texas', 20000.00 );
INSERT INTO COMPANY7 VALUES(3, 'Paul', 42, 'California', 20000.00 );
Birinchi ikkita INSERT bayonoti uchun yozuvlar COMPANY7 jadvaliga qo'shiladi. Uchinchi INSERT bayonoti uchun quyidagi xato ko'rsatiladi -
ERROR: conflicting key value violates exclusion constraint "company7_name_age_excl"
DETAIL: Key (name, age)=(Paul, 42) conflicts with existing key (name, age)=(Paul, 32).
O'chirish cheklovlari
Cheklovni olib tashlash uchun siz uning nomini bilishingiz kerak. Agar ism ma'lum bo'lsa, uni tashlab yuborish oson. Aks holda, siz tizim tomonidan yaratilgan nomni topishingiz kerak. Bu erda psql buyrug'i \d jadval nomi foydali bo'lishi mumkin. Umumiy sintaksis -
ALTER TABLE table_name DROP CONSTRAINT some_name;
Download 57.2 Kb.

Do'stlaringiz bilan baham:
1   2




Ma'lumotlar bazasi mualliflik huquqi bilan himoyalangan ©fayllar.org 2024
ma'muriyatiga murojaat qiling