Version: 2.2.0

# How to enforce uniqueness constraint

Uniqueness constraint enforces that each label, property_set pair is unique. This constraint can be enforced using the following language construct:

CREATE CONSTRAINT ON (n:label) ASSERT n.property1, n.property2, ..., IS UNIQUE;

For example, suppose you are keeping track of basic employee info in your database. Obviously, each employee should have a unique e-mail address. You can enforce this by issuing the following query:

CREATE CONSTRAINT ON (n:Employee) ASSERT n.email IS UNIQUE;

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      |+-----------------+-----------------+-----------------+| unique          | Employee        | email           |+-----------------+-----------------+-----------------+

Trying to modify the database in a way that violates the constraint will yield an error Unable to commit due to unique constraint violation on :Employee(email).

Naturally, you can also specify multiple properties when creating uniqueness constraints. For example, we might want to enforce that all employees have a unique (name, surname) pair (obviously, this would be a bad decision in real life). This can be achieved by the following query:

CREATE CONSTRAINT ON (n:Employee) ASSERT n.name, n.surname IS UNIQUE;

At this point, SHOW CONSTRAINT INFO; yields the following result:

+-----------------+-----------------+-----------------+| constraint type | label           | properties      |+-----------------+-----------------+-----------------+| unique          | Employee        | email           || unique          | Employee        | name, surname   |+-----------------+-----------------+-----------------+

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 n.email IS UNIQUE;DROP CONSTRAINT ON (n:Employee) ASSERT n.name, n.surname IS UNIQUE;

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.