NOT NULL constraint
Ushbu qo'llanmada siz ustun qiymatlari null
bo'lmasligini ta'minlash uchun PostgreSQL-ning null bo'lmagan
cheklovlari haqida bilib olasiz.
Maʼlumotlar bazasi dunyosida NULL
notanish yoki etishmayotgan maʼlumotlarni ifodalaydi. NULL
bo'sh satr yoki nol raqami bilan bir xil emas.
Kontaktning elektron pochta manzilini jadvalga kiritishingiz kerak deylik. Siz uning elektron pochta manzilini so'rashingiz mumkin.
Biroq, agar siz kontaktning elektron pochta manziliga ega yoki yo'qligini bilmasangiz, elektron pochta manzili ustuniga NULL qo'shishingiz mumkin. Bunday holda, NULL elektron pochta manzili yozib olish vaqtida noma'lum ekanligini bildiradi.
NULL
juda o'ziga xosdir. U hech narsaga teng kelmaydi, hatto o'zi ham. NULL = NULL
ifodasi NULL
ni qaytaradi, chunki ikkita nomaʼlum qiymat teng boʻlmasligi kerak.
Qiymat NULL
yoki yo'qligini tekshirish uchun siz IS NULL
mantiqiy operatoridan foydalanasiz. Misol uchun, agar elektron pochta manzilidagi qiymat NULL
bo'lsa, quyidagi ifoda rost qaytaradi.
IS NOT NULL
operatori IS NULL
operatorining natijasini inkor etadi.
PostgreSQL NOT NULL
cheklovlari
NOT NULL
cheklovlariUstun NULL
ni qabul qila oladimi yoki yo'qligini nazorat qilish uchun siz NOT NULL
cheklovidan foydalanasiz:
Bu misolda NOT NULL
cheklovlarini eʼlon qilish uchun product_id
va qty ustunlarining maʼlumotlar turiga mos keladigan NOT NULL
kalit soʻzlaridan foydalaniladi.
Esda tutingki, ustunda bir-birining yonida paydo boʻladigan NOT NULL
, chek, noyob, xorijiy kalit kabi bir nechta cheklovlar boʻlishi mumkin. Cheklovlar tartibi muhim emas. PostgreSQL cheklovlarni istalgan tartibda tekshirishi mumkin.
Agar NOT NULL
o'rniga NULL
dan foydalansangiz, ustun ham NULL
, ham NULL
bo'lmagan qiymatlarni qabul qiladi. Agar siz NULL
yoki NOT NULL
ni aniq belgilamasangiz, u sukut bo'yicha NULL
ni qabul qiladi.
Mavjud ustunlarga NOT NULL
cheklovlarini qo'shish
NOT NULL
cheklovlarini qo'shishMavjud jadval ustuniga NOT NULL
cheklovini qo'shish uchun siz ALTER TABLE
iborasining quyidagi shaklidan foydalanasiz:
Bir nechta ustunlarga bir nechta NOT NULL
cheklovlarini qo'shish uchun siz quyidagi sintaksisdan foydalanasiz:
Keling, quyidagi misolni ko'rib chiqaylik.
Birinchidan, ishlab chiqarish buyurtmalari (production_orders
) deb nomlangan yangi jadval yarating:
Keyin, production_orders
jadvaliga yangi qator qo'shing:
Keyin, qty
maydoni null emasligiga ishonch hosil qilish uchun siz qty
ustuniga null bo'lmagan cheklovni qo'shishingiz mumkin. Biroq, ustunda allaqachon ma'lumotlar mavjud. Agar siz null bo'lmagan cheklovni qo'shmoqchi bo'lsangiz, PostgreSQL xatolik chiqaradi.
NULL
ni o'z ichiga olgan ustunga NOT NULL
cheklovini qo'shish uchun avval NULL
ni NULL bo'lmaganga yangilashingiz kerak, masalan:
qty
ustunidagi qiymatlar bittaga yangilanadi. Endi siz qty
ustuniga NOT NULL
cheklovini qo'shishingiz mumkin:
Shundan so'ng siz material_id
, start_date
va finish_date
ustunlari uchun null bo'lmagan cheklovlarni yangilashingiz mumkin:
Bir nechta ustunlarga null bo'lmagan cheklovlar qo'shing:
Nihoyat, qty
ustunidagi qiymatlarni NULL ga yangilashga harakat qiling:
PostgreSQL xato xabarini chiqardi:
NOT NULL cheklovining maxsus holati
NOT NULL
cheklovidan tashqari, ustunni NULL bo'lmagan qiymatlarni qabul qilishga majburlash uchun CHECK
cheklovidan foydalanishingiz mumkin. NOT NULL
cheklovi quyidagi CHECK
chekloviga teng:
Bu foydalidir, chunki ba'zan a
yoki b
ustunlari null bo'lmasligi mumkin, lekin ikkalasi ham emas.
Masalan, foydalanuvchi jadvallarining username
yoki email
ustuni null yoki bo'sh bo'lmasligini xohlashingiz mumkin. Bunday holda siz CHECK
cheklovidan quyidagi tarzda foydalanishingiz mumkin:
Quyidagi bayonot ishlaydi.
Biroq, quyidagi bayonot ishlamaydi, chunki u CHECK
cheklovini buzadi:
Xulosa
NULLni qabul qilmaydigan ustunni majburlash uchun ustun uchun
NOT NULL
cheklovidan foydalaning. Odatiy bo'lib, ustunNULL
ni ushlab turishi mumkin.Qiymat
NULL
yoki yo'qligini tekshirish uchun sizIS NULL
operatoridan foydalanasiz.IS NOT NULL
IS NULL
natijasini inkor etadi.Qiymatni
NULL
bilan solishtirish uchun hech qachon teng operator=
dan foydalanmang, chunki u har doimNULL
ni qaytaradi.
Last updated