Er zijn een paar dingen over de twee beperkingen die u wilt opleggen:
-
Nieuwe ingevoegde rij mag geen NULL-waarde hebben voor kolom Parent_group.
- U kunt alleen een NOT NULL-beperking opleggen aan een kolom als deze alle niet-null-waarden bevat. Je hebt een null-waarde nodig in deze kolom voor het hoofdknooppunt.
- Hiervoor kun je de beperking CHECK gebruiken. Lees meer over de CHECK CONSTRAINT hier .
- Je kunt
Dit laat alleen een NULL-waarde toe voor het rootknooppunt en dwingt een NOT NULL-waarde af voor elke andere rij in de tabel.
-
Voeg een beperking toe zodat de RootGroup-rij niet kan worden verwijderd.
- Dat je al een externe sleutel hebt gedefinieerd tussen
parent_group
enpkey
, zal de database automatisch referentiële integriteit afdwingen en verbiedt dat het rootknooppunt (of wat dat betreft een bovenliggend knooppunt) wordt verwijderd. De database retourneert een fout als een poging tot VERWIJDEREN wordt gedaan op een ouder- of rootknooppunt.
- Dat je al een externe sleutel hebt gedefinieerd tussen
-
Voor het punt genoemd in de EDIT sectie, kunt u een eenvoudige controlebeperking op de tabel plaatsen, zoals
CHECK (parent_group != pkey)
. Dit zou het werk voor u moeten doen.
Lees meer over het definiëren van externe-sleutelbeperkingen en hoe u deze kunt gebruiken om referentiële integriteit af te dwingen. Ga ook via de link die ik hierboven heb gepost of hier voordat u deze suggesties toepast.