diff --git a/jOOQ/src/main/java/org/jooq/DSLContext.java b/jOOQ/src/main/java/org/jooq/DSLContext.java
index 6079eff016..593659c738 100644
--- a/jOOQ/src/main/java/org/jooq/DSLContext.java
+++ b/jOOQ/src/main/java/org/jooq/DSLContext.java
@@ -7113,6 +7113,22 @@ public interface DSLContext extends Scope , AutoCloseable {
@Support({ CUBRID, DERBY, FIREBIRD, H2, HSQLDB, MARIADB, MYSQL, POSTGRES, SQLITE })
CreateIndexStep createIndex(Name index);
+ /**
+ * Create a new DSL CREATE UNIQUE INDEX statement.
+ *
+ * @see DSL#createIndex(String)
+ */
+ @Support({ CUBRID, DERBY, FIREBIRD, H2, HSQLDB, MARIADB, MYSQL, POSTGRES, SQLITE })
+ CreateIndexStep createUniqueIndex(String index);
+
+ /**
+ * Create a new DSL CREATE UNIQUE INDEX statement.
+ *
+ * @see DSL#createIndex(Name)
+ */
+ @Support({ CUBRID, DERBY, FIREBIRD, H2, HSQLDB, MARIADB, MYSQL, POSTGRES, SQLITE })
+ CreateIndexStep createUniqueIndex(Name index);
+
/**
* Create a new DSL CREATE SEQUENCE statement.
*
diff --git a/jOOQ/src/main/java/org/jooq/impl/CreateIndexImpl.java b/jOOQ/src/main/java/org/jooq/impl/CreateIndexImpl.java
index 34bbb285c6..41203d9fbf 100644
--- a/jOOQ/src/main/java/org/jooq/impl/CreateIndexImpl.java
+++ b/jOOQ/src/main/java/org/jooq/impl/CreateIndexImpl.java
@@ -71,13 +71,19 @@ class CreateIndexImpl extends AbstractQuery implements
private static final Clause[] CLAUSES = { CREATE_INDEX };
private final Name index;
+ private final boolean unique;
private Table> table;
private Field>[] fields;
CreateIndexImpl(Configuration configuration, Name index) {
+ this(configuration, index, false);
+ }
+
+ CreateIndexImpl(Configuration configuration, Name index, boolean unique) {
super(configuration);
this.index = index;
+ this.unique = unique;
}
// ------------------------------------------------------------------------
@@ -108,7 +114,14 @@ class CreateIndexImpl extends AbstractQuery implements
@Override
public final void accept(Context> ctx) {
- ctx.keyword("create index")
+ ctx.keyword("create");
+
+ if (unique)
+ ctx.sql(' ')
+ .keyword("unique");
+
+ ctx.sql(' ')
+ .keyword("index")
.sql(' ')
.visit(index)
.sql(' ')
diff --git a/jOOQ/src/main/java/org/jooq/impl/DSL.java b/jOOQ/src/main/java/org/jooq/impl/DSL.java
index dc9edeb543..6b4a412e46 100644
--- a/jOOQ/src/main/java/org/jooq/impl/DSL.java
+++ b/jOOQ/src/main/java/org/jooq/impl/DSL.java
@@ -5605,6 +5605,26 @@ public class DSL {
return using(new DefaultConfiguration()).createIndex(index);
}
+ /**
+ * Create a new DSL CREATE UNIQUE INDEX statement.
+ *
+ * @see DSLContext#createUniqueIndex(String)
+ */
+ @Support
+ public static CreateIndexStep createUniqueIndex(String index) {
+ return using(new DefaultConfiguration()).createUniqueIndex(index);
+ }
+
+ /**
+ * Create a new DSL CREATE UNIQUE INDEX statement.
+ *
+ * @see DSLContext#createUniqueIndex(Name)
+ */
+ @Support
+ public static CreateIndexStep createUniqueIndex(Name index) {
+ return using(new DefaultConfiguration()).createUniqueIndex(index);
+ }
+
/**
* Create a new DSL CREATE SEQUENCE statement.
*
diff --git a/jOOQ/src/main/java/org/jooq/impl/DefaultDSLContext.java b/jOOQ/src/main/java/org/jooq/impl/DefaultDSLContext.java
index 689d2aa5ad..4232a8d39f 100644
--- a/jOOQ/src/main/java/org/jooq/impl/DefaultDSLContext.java
+++ b/jOOQ/src/main/java/org/jooq/impl/DefaultDSLContext.java
@@ -2245,6 +2245,16 @@ public class DefaultDSLContext extends AbstractScope implements DSLContext, Seri
return new CreateIndexImpl(configuration(), index);
}
+ @Override
+ public CreateIndexStep createUniqueIndex(String index) {
+ return createUniqueIndex(name(index));
+ }
+
+ @Override
+ public CreateIndexStep createUniqueIndex(Name index) {
+ return new CreateIndexImpl(configuration(), index, true);
+ }
+
@Override
public CreateSequenceFinalStep createSequence(String sequence) {
return createSequence(name(sequence));