Ada beberapa hal tentang dua batasan yang ingin Anda terapkan:
-
Baris baru yang dimasukkan tidak boleh memiliki nilai NULL untuk kolom Parent_group.
- Anda dapat menerapkan batasan NOT NULL pada kolom hanya jika kolom tersebut berisi semua nilai non-null. Anda memerlukan nilai nol di kolom ini untuk simpul akar.
- Untuk ini, Anda dapat menggunakan batasan CHECK. Baca lebih lanjut tentang CHECK CONSTRAINT di sini .
- Anda dapat menempatkan
Ini akan memungkinkan nilai NULL hanya untuk simpul akar dan akan memberlakukan nilai NOT NULL untuk setiap baris lain dalam tabel.
-
Tambahkan batasan agar baris RootGroup tidak dapat dihapus.
- Bahwa Anda telah menetapkan kunci asing antara
parent_group
danpkey
, database akan secara otomatis menerapkan integritas referensial dan melarang node root (atau dalam hal ini node induk) dihapus. Basis data akan mengembalikan kesalahan jika DELETE dicoba pada node induk atau root mana pun.
- Bahwa Anda telah menetapkan kunci asing antara
-
Untuk poin yang disebutkan dalam EDIT bagian, Anda dapat menempatkan batasan pemeriksaan sederhana pada tabel seperti
CHECK (parent_group != pkey)
. Ini akan berhasil untuk Anda.
Baca tentang cara mendefinisikan batasan kunci asing dan cara menggunakannya untuk menegakkan integritas referensial. Juga, buka tautan yang telah saya posting di atas atau di sini sebelum Anda menerapkan saran ini.