Ci sono alcune cose sui due vincoli che desideri imporre:
-
La nuova riga inserita non può avere un valore NULL per la colonna Parent_group.
- Puoi imporre un vincolo NOT NULL su una colonna solo se contiene tutti i valori non nulli. È necessario un valore nullo in questa colonna per il nodo radice.
- Per questo, puoi utilizzare il vincolo CHECK. Ulteriori informazioni sul VINCOLO CHECK qui .
- Puoi mettere
Ciò consentirà un valore NULL solo per il nodo radice e imporrà un valore NOT NULL per ogni altra riga nella tabella.
-
Aggiungi un vincolo in modo che la riga RootGroup non possa essere eliminata.
- Che hai già definito una chiave esterna tra
parent_group
epkey
, il database applicherà automaticamente l'integrità referenziale e vieterà l'eliminazione del nodo radice (o comunque di qualsiasi nodo padre). Il database restituirà un errore se viene tentato un DELETE su qualsiasi nodo principale o principale.
- Che hai già definito una chiave esterna tra
-
Per il punto menzionato nella EDIT sezione, puoi inserire un semplice vincolo di controllo sulla tabella come
CHECK (parent_group != pkey)
. Questo dovrebbe fare il lavoro per te.
Leggi come definire i vincoli di chiave esterna e come usarli per rafforzare l'integrità referenziale. Inoltre, passa attraverso il link che ho pubblicato sopra o qui prima di applicare questi suggerimenti.