UNIQUE constraint
Ushbu qo'llanmada siz ustun yoki ustunlar guruhida saqlangan qiymatlar jadvaldagi qatorlar bo'ylab yagona bo'lishiga ishonch hosil qilish uchun PostgreSQL UNIQUE
cheklovi haqida bilib olasiz.
Ba'zan siz ustun yoki ustunlar guruhida saqlangan qiymatlar elektron pochta manzillari yoki foydalanuvchi nomlari kabi butun jadval bo'ylab yagona bo'lishini ta'minlashni xohlaysiz.
PostgreSQL sizga ma'lumotlarning o'ziga xosligini to'g'ri saqlaydigan UNIQUE
cheklovini taqdim etadi.
UNIQUE
cheklovi mavjud bo'lganda, har safar yangi qator qo'shganingizda, qiymat jadvalda allaqachon mavjudligini tekshiradi. U o'zgartirishni rad etadi va agar qiymat allaqachon mavjud bo'lsa, xatolik chiqaradi. Xuddi shu jarayon mavjud ma'lumotlarni yangilash uchun ham amalga oshiriladi.
UNIQUE
cheklovni ustun yoki ustunlar guruhiga qo'shsangiz, PostgreSQL avtomatik ravishda ustun yoki ustunlar guruhida noyob indeks yaratadi.
Quyidagi bayonot email
ustuni uchun UNIQUE
chekloviga ega bo'lgan shaxs nomli yangi jadval yaratadi.
Esda tutingki, yuqoridagi UNIQUE
cheklov quyidagi soʻrovda koʻrsatilganidek, jadval cheklovi sifatida qayta yozilishi mumkin:
Birinchidan, INSERT
iborasidan foydalanib, person
jadvaliga yangi qator qo'shing:
Ikkinchidan, takroriy elektron pochta bilan boshqa qatorni kiriting.
PostgreSQL xato xabarini chiqardi.
Bir nechta ustunlarda UNIQUE
cheklash yaratish
UNIQUE
cheklash yaratishPostgreSQL sizga quyidagi sintaksisdan foydalangan holda ustunlar guruhiga UNIQUE
cheklov yaratish imkonini beradi:
c2 va c3 ustunlaridagi qiymatlar kombinatsiyasi butun jadval bo'ylab yagona bo'ladi. c2 yoki c3 ustunining qiymati yagona boʻlishi shart emas.
Noyob indeks yordamida noyob cheklovlarni qo'shish
Ba'zan mavjud ustun yoki ustunlar guruhiga noyob cheklov qo'shishni xohlashingiz mumkin. Keling, quyidagi misolni ko'rib chiqaylik.
Birinchidan, sizda equipment
deb nomlangan jadval bor deylik:
Ikkinchidan, equip_id
ustuniga asoslangan noyob indeks yarating.
Uchinchidan, equipment_equip_id
indeksidan foydalanib, equipment
jadvaliga noyob cheklov qo'shing.
E'tibor bering, ALTER TABLE
iborasi stolda eksklyuziv qulfga ega bo'ladi. Agar sizda kutilayotgan tranzaktsiyalaringiz bo'lsa, jadvalni o'zgartirishdan oldin u barcha tranzaktsiyalar tugashini kutadi. Shuning uchun, quyidagi soʻrov yordamida davom etayotgan joriy kutilayotgan tranzaksiyalarni koʻrish uchun pg_stat_activity
jadvalini tekshiring:
Tranzaksiyada boʻsh turgan qiymatga ega holat ustunini topish uchun natijaga qarashingiz kerak. Bular yakunlanishi kutilayotgan tranzaktsiyalar.
Bir jadvaldagi satrlar bo'ylab noyob ustun yoki ustunlar guruhida saqlangan qiymatlarni qo'llash uchun UNIQUE
cheklovlaridan foydalaning.
Xulosa
Bir jadvaldagi satrlar bo'ylab noyob ustun yoki ustunlar guruhida saqlangan qiymatlarni qo'llash uchun
UNIQUE
cheklovlaridan foydalaning.
Last updated