Mysql
 sql >> Database >  >> RDS >> Mysql

Vincolo nella tabella MySQL?

Ci sono alcune cose sui due vincoli che desideri imporre:

  1. 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.

  1. Aggiungi un vincolo in modo che la riga RootGroup non possa essere eliminata.

    • Che hai già definito una chiave esterna tra parent_group e pkey , 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.
  2. 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.