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.
*/