Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

Restrição na tabela MYSQL?


Existem algumas coisas sobre as duas restrições que você deseja impor:

  1. A nova linha inserida não pode ter valor NULL para a coluna Parent_group.
    • Você pode impor uma restrição NOT NULL em uma coluna somente se ela contiver todos os valores não nulos. Você precisa de um valor nulo nesta coluna para o nó raiz.
    • Para isso, você pode usar a restrição CHECK. Leia mais sobre CHECK CONSTRAINT aqui .
    • Você pode colocar

Isso permitirá um valor NULL apenas para o nó raiz e aplicará um valor NOT NULL para todas as outras linhas da tabela.

  1. Adicione uma restrição para que a linha RootGroup não possa ser excluída.
    • Que você já definiu uma chave estrangeira entre parent_group e pkey , o banco de dados aplicará automaticamente a integridade referencial e proibirá que o nó raiz (ou qualquer nó pai) seja excluído. O banco de dados retornará um erro se um DELETE for tentado em qualquer nó pai ou raiz.

  2. Para o ponto mencionado no EDIT seção, você pode colocar uma restrição de verificação simples na tabela como
    CHECK (parent_group != pkey) . Isso deve fazer o trabalho para você.

Leia sobre como definir restrições de chave estrangeira e como usá-las para impor a integridade referencial. Além disso, acesse o link que postei acima ou aqui antes de aplicar essas sugestões.