Existem algumas coisas sobre as duas restrições que você deseja impor:
-
A nova linha inserida não pode ter valor NULL para a coluna Parent_group.
- Você pode impor uma restrição NOT NULL em uma coluna somente se ela contiver todos os valores não nulos. Você precisa de um valor nulo nesta coluna para o nó raiz.
- Para isso, você pode usar a restrição CHECK. Leia mais sobre CHECK CONSTRAINT aqui .
- Você pode colocar
Isso permitirá um valor NULL apenas para o nó raiz e aplicará um valor NOT NULL para todas as outras linhas da tabela.
-
Adicione uma restrição para que a linha RootGroup não possa ser excluída.
- Que você já definiu uma chave estrangeira entre
parent_group
epkey
, o banco de dados aplicará automaticamente a integridade referencial e proibirá que o nó raiz (ou qualquer nó pai) seja excluído. O banco de dados retornará um erro se um DELETE for tentado em qualquer nó pai ou raiz.
- Que você já definiu uma chave estrangeira entre
-
Para o ponto mencionado no EDIT seção, você pode colocar uma restrição de verificação simples na tabela comoCHECK (parent_group != pkey)
. Isso deve fazer o trabalho para você.
Leia sobre como definir restrições de chave estrangeira e como usá-las para impor a integridade referencial. Além disso, acesse o link que postei acima ou aqui antes de aplicar essas sugestões.