<saqlash qoidasi >::= {CASCADE | SET NULL | SET DEFAULT |
NO ACTION}
Agar ajdod jadvalida satrni o’chirish (ON DELETE) harakati qilinganda, SQL tilida quyidagi holatlardan biri yuz berishi mumkin:
CASCADE – ajdod jadvaldagi satrlar o’chiriladi, avlod jadvaldagi shu satrlarga havola qilgan satrlar ham avtomatik ravishda o’chiriladi. Vaholanki, avlod jadvali ham boshqa jadval uchun ajdod bo’lishi mumkin, u holda avlod jadvalida o’chirilgan satrlarga havola qilgan boshqa jadvalni satrlari ham o’chiriladi (kaskad shaklida);
SET NULL – ajdod jadvaldagi satrlar o’chiriladi, avlod jadvaldagi shu satrlarga havola qilgan tashqi kalitni qiymati NULLga almashtiriladi. Bu usulni tashqi kalit NOT NULL hususiyatiga ega bo’lmagandagina qo’llash mumkin.
SET DEFAULT – ajdod jadvalida satrlar o’chiriladi, avlod jadvaldagi shu satrlarga havola qilgan tashqi kalit ustunning qiymati kelishuv bo’yicha olingan qiymatga almashtiriladi. Bu usulni tashqi kalit SET DEFAULT xususiyatiga ega bo’lsa va unda kelishuv qiymat berilgan bo’lsa, qo’llash mumkin.
NO ACTION – agarda avlod jadvaldagi tashqi kalit ajdod jadvalga biror bir satriga havola qilsa, ajdod jadvalidagi satrni o’chirish man etiladi. Bu qoida kelishuv bo’yicha o’rnatiladi.
Xuddi shunday qoidalar berilganlarning o’zgartirishda ham qo’llanadi
(ON UPDATE) :
CASCADE – ajdod jadvaldagi nomzod kalitni qiymati o’zgartiriladi, avlod jadvaldagi shu satrlarga havola qilgan satrlarning tashqi kalitdagi qiymati ham avtomatik ravishda nomzod kalitni yangi qiymatiga o’zgaradi. Avlod jadvali ham boshqa jadval uchun ajdod bo’lishi mumkin, u holda, agarda tashqi kalit avlod jadvalni nomzod kalit tarkibiga kirgan bo’lsa, avlod jadvalida o’zgartirilgan satrlarga havola qilgan boshqa jadvalning satrlari ham o’zgartiriladi (kaskad shaklida).
SET NULL – ajdod jadvaldagi nomzod kalitni qiymati o’zgartiriladi, avlod jadvaldagi shu satrlarga havola qilgan tashqi kalit qiymati NULLga almashtiriladi. Bu usulni tashqi kalit NOT NULL xususiyatiga ega bo’lmagandagina qo’llash mumkin.
SET DEFAULT – ajdod jadvalida nomzod kalitni qiymati o’zgartiriladi, avlod jadvaldagi shu satrlarga havola qilgan tashqi kalitni qiymati kelishuv bo’yicha olingan qiymatga almashtiriladi.
Bu usulni, tashqi kalit SET DEFAULT xususiyatiga ega bo’lib, unda kelishuv qiymat berilgan bo’lsagina qo’llash mumkin.
NO ACTION – agarda avlod jadvaldagi tashqi kalit ajdod jadvalga biror bir satriga havola qilsa, ajdod jadvalidagi nomzod kalitni o’zgartirish man etiladi.
Misol:
Do'stlaringiz bilan baham: |