Skip to main content
Version: 2.9.0

How to enforce existence constraint

Existence constraint enforces that each vertex that has a specific label also must have the specified property. Only one label and property can be supplied at a time. This constraint can be enforced using the following language construct:

CREATE CONSTRAINT ON (n:label) ASSERT EXISTS (n.property);

For example, suppose you are keeping track of basic employee info in your database. Obviously, each employee should have a first name and last name. You can enforce this by issuing the following queries:

CREATE CONSTRAINT ON (n:Employee) ASSERT EXISTS (n.first_name);
CREATE CONSTRAINT ON (n:Employee) ASSERT EXISTS (n.last_name);

You can confirm that your constraint was successfully created by issuing the following query:

SHOW CONSTRAINT INFO;

You should get a result similar to this:

+-----------------+-----------------+-----------------+
| constraint type | label | properties |
+-----------------+-----------------+-----------------+
| exists | Employee | first_name |
| exists | Employee | last_name |
+-----------------+-----------------+-----------------+

Trying to modify the database in a way that violates the constraint will yield an error.

Constraints can also be dropped using the DROP keyword. For example, dropping the previously created constraints can be done by the following query:

DROP CONSTRAINT ON (n:Employee) ASSERT EXISTS (n.first_name);
DROP CONSTRAINT ON (n:Employee) ASSERT EXISTS (n.last_name);

Now, SHOW CONSTRAINT INFO; yields an empty set.

Where to next?

To learn more about Memgraph's functionalities, visit the Reference guide. For real-world examples of how to use Memgraph, we strongly suggest going through one of the available Tutorials.