ограничение ви позволява да поставите ограничения върху данните, които могат да бъдат въведени срещу възел или връзка.
Ограниченията спомагат за налагането на целостта на данните, тъй като пречат на потребителите да въвеждат грешен вид данни. Ако някой се опита да въведе грешен тип данни, когато е приложено ограничение, той ще получи съобщение за грешка.
Типове ограничения
В Neo4j можете да създадете уникалност ограничения и съществуване на собственост ограничения.
- Ограничение за уникалност
- Указва, че свойството трябва да съдържа уникална стойност (т.е. няма два възела с Изпълнител етикетът може да споделя стойност за Име собственост.)
- Ограничение за съществуване на собственост
- Гарантира, че съществува свойство за всички възли със специфичен етикет или за всички връзки с определен тип. Ограниченията за съществуване на собственост са налични само в Neo4j Enterprise Edition.
Създайте ограничение за уникалност
За да създадете ограничение за уникалност в Neo4j, използвайте CREATE CONSTRAINT ON
изявление. Като това:
CREATE CONSTRAINT ON (a:Artist) ASSERT a.Name IS UNIQUE
В горния пример създаваме уникалност ограничение за Име свойство на всички възли с Изпълнител етикет.
Когато операторът е успешен, се показва следното съобщение:
Когато създадете ограничение, Neo4j ще създаде индекс. Cypher ще използва този индекс за търсене точно както другите индекси.
Следователно не е необходимо да създавате отделен индекс. Всъщност, ако се опитате да създадете ограничение, когато вече има индекс, ще получите грешка.
Преглед на ограничението
Ограниченията (и индексите) стават част от (по избор) схемата на базата данни.
Можем да видим ограничението, което току-що създадохме, като използваме :schema
команда. Като това:
:schema
Ще видите новосъздаденото ограничение, както и индекса, който е създаден с него. Можем също да видим индекса, който е създаден по-рано:
Тествайте ограничението
Можете да тествате дали ограничението действително работи, като се опитате да създадете един и същ изпълнител два пъти.
Изпълнете два пъти следния оператор:
CREATE (a:Artist {Name: "Joe Satriani"}) RETURN a
Първият път, когато го стартирате, възелът ще бъде създаден. При втория път, когато го стартирате, трябва да получите следното съобщение за грешка:
Ограничения за съществуване на собственост
Ограниченията за съществуване на свойства могат да се използват, за да се гарантира, че всички възли с определен етикет имат определено свойство. Например, можете да посочите, че всички възли са етикетирани с Изпълнител трябва да съдържа Име собственост.
За да създадете ограничение за съществуване на свойство, използвайте ASSERT exists(variable.propertyName)
синтаксис.
Като това:
CREATE CONSTRAINT ON (a.Artist) ASSERT exists(a.Name)
Имайте предвид, че ограниченията за съществуване на собственост са налични само в Neo4j Enterprise Edition.