Der er et par ting ved de to begrænsninger, du ønsker at pålægge:
-
Ny indsat række kan ikke have NULL-værdi for kolonnen Parent_group.
- Du kan kun pålægge en NOT NULL-begrænsning på en kolonne, hvis den indeholder alle ikke-nul-værdier. Du skal bruge en nulværdi i denne kolonne for rodnoden.
- Til dette kan du bruge CHECK-begrænsningen. Læs mere om KONTROLBEGRÆNSNING her .
- Du kan sætte
Dette vil kun tillade en NULL-værdi for rodnoden og vil gennemtvinge en NOT NULL-værdi for hver anden række i tabellen.
-
Tilføj en begrænsning, så RootGroup-rækken ikke kan slettes.
- At du allerede har defineret en fremmednøgle mellem
parent_group
ogpkey
, vil databasen automatisk håndhæve referentiel integritet og forbyde rodnoden (eller for den sags skyld enhver overordnet node) i at blive slettet. Databasen returnerer en fejl, hvis en SLETT forsøges på en overordnet eller rodnode.
- At du allerede har defineret en fremmednøgle mellem
-
For det punkt, der er nævnt i EDIT sektionen, kan du sætte en simpel check-begrænsning på tabellen som
CHECK (parent_group != pkey)
. Dette burde gøre arbejdet for dig.
Læs om, hvordan du definerer begrænsninger for fremmednøgle, og hvordan du bruger dem til at håndhæve referentiel integritet. Gå også gennem det link, jeg har postet ovenfor eller her før du anvender disse forslag.