sql >> Database >  >> RDS >> Mysql

Beperking in MYSQL-tabel?

Er zijn een paar dingen over de twee beperkingen die u wilt opleggen:

  1. Nieuwe ingevoegde rij mag geen NULL-waarde hebben voor kolom Parent_group.

    • U kunt alleen een NOT NULL-beperking opleggen aan een kolom als deze alle niet-null-waarden bevat. Je hebt een null-waarde nodig in deze kolom voor het hoofdknooppunt.
    • Hiervoor kun je de beperking CHECK gebruiken. Lees meer over de CHECK CONSTRAINT hier .
    • Je kunt

Dit laat alleen een NULL-waarde toe voor het rootknooppunt en dwingt een NOT NULL-waarde af voor elke andere rij in de tabel.

  1. Voeg een beperking toe zodat de RootGroup-rij niet kan worden verwijderd.

    • Dat je al een externe sleutel hebt gedefinieerd tussen parent_group en pkey , zal de database automatisch referentiële integriteit afdwingen en verbiedt dat het rootknooppunt (of wat dat betreft een bovenliggend knooppunt) wordt verwijderd. De database retourneert een fout als een poging tot VERWIJDEREN wordt gedaan op een ouder- of rootknooppunt.
  2. Voor het punt genoemd in de EDIT sectie, kunt u een eenvoudige controlebeperking op de tabel plaatsen, zoals
    CHECK (parent_group != pkey) . Dit zou het werk voor u moeten doen.

Lees meer over het definiëren van externe-sleutelbeperkingen en hoe u deze kunt gebruiken om referentiële integriteit af te dwingen. Ga ook via de link die ik hierboven heb gepost of hier voordat u deze suggesties toepast.




  1. Array van vragen voor `for wait`-lus voor postgresql-transactiehelper

  2. Python 'int32' kan niet worden geconverteerd naar een MySQL-type

  3. Een overzicht van replicatie op volumeniveau voor PostgreSQL met DRBD

  4. MySQL voegt geen backslash in