Mysql
 sql >> Base de données >  >> RDS >> Mysql

Contrainte dans la table MYSQL ?

Il y a quelques éléments concernant les deux contraintes que vous souhaitez imposer :

  1. La nouvelle ligne insérée ne peut pas avoir de valeur NULL pour la colonne Parent_group.

    • Vous pouvez imposer une contrainte NOT NULL sur une colonne uniquement si elle contient toutes les valeurs non nulles. Vous avez besoin d'une valeur nulle dans cette colonne pour le nœud racine.
    • Pour cela, vous pouvez utiliser la contrainte CHECK. En savoir plus sur la CONTRAINTE DE VÉRIFICATION ici .
    • Vous pouvez mettre

Cela autorisera une valeur NULL uniquement pour le nœud racine et appliquera une valeur NOT NULL pour toutes les autres lignes de la table.

  1. Ajoutez une contrainte afin que la ligne RootGroup ne puisse pas être supprimée.

    • Que vous avez déjà défini une clé étrangère entre parent_group et pkey , la base de données appliquera automatiquement l'intégrité référentielle et empêchera la suppression du nœud racine (ou d'ailleurs de tout nœud parent). La base de données renverra une erreur si une DELETE est tentée sur un nœud parent ou racine.
  2. Pour le point mentionné dans le EDIT section, vous pouvez mettre une simple contrainte de vérification sur la table comme
    CHECK (parent_group != pkey) . Cela devrait faire le travail pour vous.

Découvrez comment définir les contraintes de clé étrangère et comment les utiliser pour appliquer l'intégrité référentielle. Aussi, passez par le lien que j'ai posté ci-dessus ou ici avant d'appliquer ces suggestions.