Jest kilka rzeczy związanych z dwoma ograniczeniami, które chcesz nałożyć:
-
Nowo wstawiony wiersz nie może mieć wartości NULL dla kolumny Parent_group.
- Możesz nałożyć ograniczenie NOT NULL na kolumnę tylko wtedy, gdy zawiera ona wszystkie wartości inne niż null. Potrzebujesz wartości null w tej kolumnie dla węzła głównego.
- W tym celu możesz użyć ograniczenia CHECK. Przeczytaj więcej o ograniczeniu SPRAWDŹ tutaj .
- Możesz umieścić
Umożliwi to ustawienie wartości NULL tylko dla węzła głównego i wymusi wartość NOT NULL dla każdego innego wiersza w tabeli.
-
Dodaj ograniczenie, aby nie można było usunąć wiersza RootGroup.
- Że już zdefiniowałeś klucz obcy między
parent_group
ipkey
, baza danych automatycznie wymusi integralność referencyjną i zabroni usuwania węzła głównego (lub w tym przypadku dowolnego węzła nadrzędnego). Baza danych zwróci błąd, jeśli zostanie podjęta próba DELETE na dowolnym węźle nadrzędnym lub głównym.
- Że już zdefiniowałeś klucz obcy między
-
Dla punktu wymienionego w EDYTUJ sekcji, możesz umieścić proste ograniczenie sprawdzające w tabeli, takie jak
CHECK (parent_group != pkey)
. To powinno wykonać zadanie za Ciebie.
Przeczytaj, jak zdefiniować ograniczenia klucza obcego i jak ich używać do wymuszania integralności referencyjnej. Przejdź również przez link, który opublikowałem powyżej lub tutaj zanim zastosujesz te sugestie.