diff --git a/jOOQ/src/main/java/org/jooq/impl/ConstraintImpl.java b/jOOQ/src/main/java/org/jooq/impl/ConstraintImpl.java index 671c8beb49..021964b6ea 100644 --- a/jOOQ/src/main/java/org/jooq/impl/ConstraintImpl.java +++ b/jOOQ/src/main/java/org/jooq/impl/ConstraintImpl.java @@ -84,6 +84,7 @@ import org.jooq.Context; import org.jooq.Field; import org.jooq.Name; import org.jooq.Table; +import org.jooq.exception.DataAccessException; /** * @author Lukas Eder @@ -139,6 +140,10 @@ implements private Action onUpdate; private Condition check; + ConstraintImpl() { + this(null); + } + ConstraintImpl(Name name) { this.name = name; } @@ -151,16 +156,20 @@ implements @Override public final void accept(Context ctx) { if (ctx.data(DATA_CONSTRAINT_REFERENCE) != null) { + if (name == null) + throw new DataAccessException("Cannot ALTER or DROP CONSTRAINT without name"); + ctx.visit(name); } else { boolean qualify = ctx.qualify(); - ctx.keyword("constraint") - .sql(' ') - .visit(name) - .formatIndentStart() - .formatSeparator(); + if (name != null) + ctx.keyword("constraint") + .sql(' ') + .visit(name) + .formatIndentStart() + .formatSeparator(); if (unique != null) { ctx.keyword("unique") diff --git a/jOOQ/src/main/java/org/jooq/impl/DSL.java b/jOOQ/src/main/java/org/jooq/impl/DSL.java index 66b6239c51..212eb78e65 100644 --- a/jOOQ/src/main/java/org/jooq/impl/DSL.java +++ b/jOOQ/src/main/java/org/jooq/impl/DSL.java @@ -4780,6 +4780,14 @@ public class DSL { // XXX DDL Clauses // ------------------------------------------------------------------------- + /** + * Create an unnamed (system named) CONSTRAINT specification. + */ + @Support + public static ConstraintTypeStep constraint() { + return new ConstraintImpl(); + } + /** * Create a CONSTRAINT specification. */