唯一约束
适用于 ✅ 开源版 ✅ 专业版 ✅ 企业版
不适合作为主键的候选键仍应声明为 UNIQUE 以强制唯一性,以及出于查询性能的原因。 在 jOOQ 中,这可以通过以下方法完成
// Create a new table with columns and unnamed constraints
create.createTable("table")
.column("column1", INTEGER)
.column("column2", INTEGER)
.column("column3", INTEGER)
.unique("column1")
.unique("column2", "column3")
.execute();
// Equivalent to the above
create.createTable("table")
.column("column1", INTEGER)
.column("column2", INTEGER)
.column("column3", INTEGER)
.constraints(
unique("column1"),
unique("column2", "column3")
)
.execute();
// Create a new table with columns and named constraints (recommended if you want to alter the constraint)
create.createTable("table")
.column("column1", INTEGER)
.column("column2", INTEGER)
.column("column3", INTEGER)
.constraints(
constraint("uk1").unique("column1"),
constraint("uk2").unique("column2", "column3")
)
.execute();
方言支持
此示例使用 jOOQ
createTable("table")
.column("column1", INTEGER)
.constraints(
constraint("uk").unique("column1")
)
翻译成以下特定方言的表达式
Access, DB2, Firebird, Hana, Teradata
CREATE TABLE table ( column1 integer, CONSTRAINT uk UNIQUE (column1) )
ASE, Sybase
CREATE TABLE table ( column1 int NULL, CONSTRAINT uk UNIQUE (column1) )
Aurora MySQL, Aurora Postgres, Derby, DuckDB, Exasol, H2, HSQLDB, MariaDB, MemSQL, MySQL, Postgres, Redshift, SQLServer, SQLite, Vertica, YugabyteDB
CREATE TABLE table ( column1 int, CONSTRAINT uk UNIQUE (column1) )
BigQuery
CREATE TABLE table ( column1 int64 )
ClickHouse
CREATE TABLE table ( column1 Nullable(integer) ) ENGINE Log()
CockroachDB
CREATE TABLE table ( column1 int4, CONSTRAINT uk UNIQUE (column1) )
Databricks
CREATE TABLE table ( column1 int, CONSTRAINT uk UNIQUE (column1) ) TBLPROPERTIES( 'delta.columnMapping.mode' = 'name', 'delta.feature.allowColumnDefaults' = 'supported' )
Informix
CREATE TABLE table ( column1 integer, UNIQUE (column1) CONSTRAINT uk )
Oracle, Snowflake
CREATE TABLE table ( column1 number(10), CONSTRAINT uk UNIQUE (column1) )
SQLDataWarehouse
CREATE TABLE table ( column1 int, CONSTRAINT uk UNIQUE (column1) NOT ENFORCED )
Trino
CREATE TABLE table ( column1 int )
使用 jOOQ 3.21 生成。早期 jOOQ 版本的支持可能有所不同。 在我们的网站上翻译您自己的 SQL
反馈
您对此页面有任何反馈吗? 我们很乐意听到您的意见!