When creating a constraint, for example
CREATE CONSTRAINT ON (n:ZipCode) ASSERT n.name IS UNIQUE;
this will require a lock on all nodes with the label the constraint is being created for, in this case ZipCode
If you have another transaction which was opened prior to the CREATE CONSTRAINT Cypher statement and it has a lock on the same Node label, for example
Begin
create (n:ZipCode {name:'94401'}) return n;
then the CREATE CONSTRAINT will not progress until the open transaction is comitted/rolled back.