sql >> Databasteknik >  >> RDS >> Mysql

Neo4j - Skapa en begränsning med Cypher

En begränsning låter dig lägga begränsningar över data som kan matas in mot en nod eller en relation.

Begränsningar hjälper till att upprätthålla dataintegritet, eftersom de hindrar användare från att ange fel typ av data. Om någon försöker ange fel typ av data när en begränsning har tillämpats kommer de att få ett felmeddelande.

Begränsningstyper

I Neo4j kan du skapa unikhet begränsningar och egendomsexistens begränsningar.

Unikhetsbegränsning
Anger att egenskapen måste innehålla ett unikt värde (dvs inga två noder med en Artist etiketten kan dela ett värde för namnet egendom.)
Begränsning för egendomsexistens
Säkerställer att det finns en egenskap för alla noder med en specifik etikett eller för alla relationer med en specifik typ. Egenskapsbegränsningar är endast tillgängliga i Neo4j Enterprise Edition.

Skapa en unikhetsbegränsning

För att skapa en unikhetsbegränsning i Neo4j, använd CREATE CONSTRAINT ON påstående. Så här:

CREATE CONSTRAINT ON (a:Artist) ASSERT a.Name IS UNIQUE

I exemplet ovan skapar vi en unikhet begränsning på Namn egenskapen för alla noder med Artist märka.

När påståendet lyckas visas följande meddelande:

När du skapar en begränsning kommer Neo4j att skapa ett index. Cypher kommer att använda det indexet för uppslagningar precis som andra index.

Därför finns det inget behov av att skapa ett separat index. Faktum är att om du försöker skapa en begränsning när det redan finns ett index, får du ett felmeddelande.

Visa begränsningen

Begränsningar (och index) blir en del av det (valfria) databasschemat.

Vi kan se begränsningen vi just skapade genom att använda :schema kommando. Så här:

:schema

Du kommer att se den nyskapade begränsningen, såväl som indexet som skapades med den. Vi kan också se indexet som skapades tidigare:

Testa begränsningen

Du kan testa att begränsningen faktiskt fungerar genom att försöka skapa samma artist två gånger.

Kör följande programsats två gånger:

CREATE (a:Artist {Name: "Joe Satriani"}) 
RETURN a

Första gången du kör det skapas noden. Andra gången du kör det bör du få följande felmeddelande:

Begränsningar för egenskapens existens

Egenskapsexistensbegränsningar kan användas för att säkerställa att alla noder med en viss etikett har en viss egenskap. Du kan till exempel ange att alla noder är märkta med Artist måste innehålla ett namn egendom.

För att skapa en egenskapsrestriktion, använd ASSERT exists(variable.propertyName) syntax.

Så här:

CREATE CONSTRAINT ON (a.Artist) ASSERT exists(a.Name)

Observera att begränsningar för egenskapens existens endast är tillgängliga i Neo4j Enterprise Edition.


  1. Anpassa Spotlight Cloud Alarms

  2. Dolda funktioner i PostgreSQL

  3. Transaktionsloggövervakning

  4. Sekvenser som inte påverkas av transaktioner?