(Quick Reference)

unique

Purpose

Constraints a property as unique at the database level

Examples

login(unique:true)

Description

Set to true if the property must be unique (this is a persistent call and will query the database)

Be aware that it's possible (though uncommon in practice) for a uniqueness constraint validation to pass but a subsequent save of the data to fail due to a uniqueness constraint enforced at the database level. The only way to prevent this would be to use the SERIALIZABLE transaction isolation level (bad for performance) or just be prepared to get an exception to this effect at some point.

Scope of unique constraint can be specified by specifying the name of another property of the same class, or list of such names. The semantics in these cases is: pair of constrained property value and scope property value must be unique (or combination of constrained property value and all scope property values must be unique).

Example:

group(unique:'department')

In the above example group name must be unique in one department but there might be groups with same name in different departments.

Another example:

login(unique:['group','department'])

In this example login must be unique in group and department. There might be same logins in different groups or different departments.

This constraint influences schema generation.

Error Code: className.propertyName.unique