Има няколко неща относно двете ограничения, които искате да наложите:
-
Новият вмъкнат ред не може да има NULL стойност за колона Parent_group.
- Можете да наложите ограничение NOT NULL на колона само ако съдържа всички ненулеви стойности. Нуждаете се от нулева стойност в тази колона за основния възел.
- За това можете да използвате ограничението CHECK. Прочетете повече за CHECK CONSTRAINT тук .
- Можете да поставите
Това ще позволи NULL стойност само за основния възел и ще наложи НЕ NULL стойност за всеки друг ред в таблицата.
-
Добавете ограничение, така че редът RootGroup да не може да бъде изтрит.
- Че вече сте дефинирали външен ключ между
parent_group
иpkey
, базата данни автоматично ще наложи референтна цялост и ще забрани изтриването на основния възел (или по този въпрос всеки родителски възел). Базата данни ще върне грешка, ако се опита DELETE на който и да е родителски или основен възел.
- Че вече сте дефинирали външен ключ между
-
За точката, спомената в РЕДАКТИРАНЕ раздел, можете да поставите просто ограничение за проверка на таблицата като
CHECK (parent_group != pkey)
. Това трябва да ви свърши работа.
Прочетете как да дефинирате ограниченията на външния ключ и как да ги използвате за налагане на референтна цялост. Освен това преминете през връзката, която публикувах по-горе, или тук преди да приложите тези предложения.