pub struct ColumnDef { /* private fields */ }
Expand description
Specification of a table column
Implementationsยง
Sourceยงimpl ColumnDef
impl ColumnDef
Sourcepub fn new_with_type<T>(name: T, types: ColumnType) -> Selfwhere
T: IntoIden,
pub fn new_with_type<T>(name: T, types: ColumnType) -> Selfwhere
T: IntoIden,
Construct a table column with column type
Sourcepub fn default<T>(&mut self, value: T) -> &mut Selfwhere
T: Into<SimpleExpr>,
pub fn default<T>(&mut self, value: T) -> &mut Selfwhere
T: Into<SimpleExpr>,
Set default expression of a column
use sea_query::{tests_cfg::*, *};
let table = Table::create()
.table(Char::Table)
.col(ColumnDef::new(Char::FontId).integer().default(12i32))
.col(
ColumnDef::new(Char::CreatedAt)
.timestamp()
.default(Expr::current_timestamp())
.not_null(),
)
.to_owned();
assert_eq!(
table.to_string(MysqlQueryBuilder),
[
"CREATE TABLE `character` (",
"`font_id` int DEFAULT 12,",
"`created_at` timestamp DEFAULT CURRENT_TIMESTAMP NOT NULL",
")",
]
.join(" ")
);
assert_eq!(
table.to_string(PostgresQueryBuilder),
[
r#"CREATE TABLE "character" ("#,
r#""font_id" integer DEFAULT 12,"#,
r#""created_at" timestamp DEFAULT CURRENT_TIMESTAMP NOT NULL"#,
r#")"#,
]
.join(" ")
);
Sourcepub fn auto_increment(&mut self) -> &mut Self
pub fn auto_increment(&mut self) -> &mut Self
Set column auto increment
Sourcepub fn unique_key(&mut self) -> &mut Self
pub fn unique_key(&mut self) -> &mut Self
Set column unique constraint
Sourcepub fn primary_key(&mut self) -> &mut Self
pub fn primary_key(&mut self) -> &mut Self
Set column as primary key
Sourcepub fn char_len(&mut self, length: u32) -> &mut Self
pub fn char_len(&mut self, length: u32) -> &mut Self
Set column type as char with custom length
Sourcepub fn string_len(&mut self, length: u32) -> &mut Self
pub fn string_len(&mut self, length: u32) -> &mut Self
Set column type as string with custom length
Sourcepub fn tiny_integer(&mut self) -> &mut Self
pub fn tiny_integer(&mut self) -> &mut Self
Set column type as tiny_integer
Sourcepub fn small_integer(&mut self) -> &mut Self
pub fn small_integer(&mut self) -> &mut Self
Set column type as small_integer
Sourcepub fn big_integer(&mut self) -> &mut Self
pub fn big_integer(&mut self) -> &mut Self
Set column type as big_integer
Sourcepub fn tiny_unsigned(&mut self) -> &mut Self
pub fn tiny_unsigned(&mut self) -> &mut Self
Set column type as tiny_unsigned
Sourcepub fn small_unsigned(&mut self) -> &mut Self
pub fn small_unsigned(&mut self) -> &mut Self
Set column type as small_unsigned
Sourcepub fn big_unsigned(&mut self) -> &mut Self
pub fn big_unsigned(&mut self) -> &mut Self
Set column type as big_unsigned
Sourcepub fn decimal_len(&mut self, precision: u32, scale: u32) -> &mut Self
pub fn decimal_len(&mut self, precision: u32, scale: u32) -> &mut Self
Set column type as decimal with custom precision and scale
Sourcepub fn interval(
&mut self,
fields: Option<PgInterval>,
precision: Option<u32>,
) -> &mut Self
pub fn interval( &mut self, fields: Option<PgInterval>, precision: Option<u32>, ) -> &mut Self
Set column type as interval type with optional fields and precision. Postgres only
use sea_query::{tests_cfg::*, *};
assert_eq!(
Table::create()
.table(Glyph::Table)
.col(
ColumnDef::new(Alias::new("I1"))
.interval(None, None)
.not_null()
)
.col(
ColumnDef::new(Alias::new("I2"))
.interval(Some(PgInterval::YearToMonth), None)
.not_null()
)
.col(
ColumnDef::new(Alias::new("I3"))
.interval(None, Some(42))
.not_null()
)
.col(
ColumnDef::new(Alias::new("I4"))
.interval(Some(PgInterval::Hour), Some(43))
.not_null()
)
.to_string(PostgresQueryBuilder),
[
r#"CREATE TABLE "glyph" ("#,
r#""I1" interval NOT NULL,"#,
r#""I2" interval YEAR TO MONTH NOT NULL,"#,
r#""I3" interval(42) NOT NULL,"#,
r#""I4" interval HOUR(43) NOT NULL"#,
r#")"#,
]
.join(" ")
);
pub fn vector(&mut self, size: Option<u32>) -> &mut Self
Sourcepub fn timestamp_with_time_zone(&mut self) -> &mut Self
pub fn timestamp_with_time_zone(&mut self) -> &mut Self
Set column type as timestamp with time zone. Postgres only
Sourcepub fn binary_len(&mut self, length: u32) -> &mut Self
pub fn binary_len(&mut self, length: u32) -> &mut Self
Set column type as binary with custom length
Sourcepub fn var_binary(&mut self, length: u32) -> &mut Self
pub fn var_binary(&mut self, length: u32) -> &mut Self
Set column type as binary with variable length
Sourcepub fn bit(&mut self, length: Option<u32>) -> &mut Self
pub fn bit(&mut self, length: Option<u32>) -> &mut Self
Set column type as bit with variable length
Sourcepub fn varbit(&mut self, length: u32) -> &mut Self
pub fn varbit(&mut self, length: u32) -> &mut Self
Set column type as varbit with variable length
Sourcepub fn money_len(&mut self, precision: u32, scale: u32) -> &mut Self
pub fn money_len(&mut self, precision: u32, scale: u32) -> &mut Self
Set column type as money with custom precision and scale
Sourcepub fn json_binary(&mut self) -> &mut Self
pub fn json_binary(&mut self) -> &mut Self
Set column type as json binary.
Sourcepub fn custom<T>(&mut self, name: T) -> &mut Selfwhere
T: IntoIden,
pub fn custom<T>(&mut self, name: T) -> &mut Selfwhere
T: IntoIden,
Use a custom type on this column.
Sourcepub fn enumeration<N, S, V>(&mut self, name: N, variants: V) -> &mut Self
pub fn enumeration<N, S, V>(&mut self, name: N, variants: V) -> &mut Self
Set column type as enum.
Sourcepub fn array(&mut self, elem_type: ColumnType) -> &mut Self
pub fn array(&mut self, elem_type: ColumnType) -> &mut Self
Set column type as an array with a specified element type. This is only supported on Postgres.
Sourcepub fn cidr(&mut self) -> &mut Self
pub fn cidr(&mut self) -> &mut Self
Set columnt type as cidr. This is only supported on Postgres.
Sourcepub fn inet(&mut self) -> &mut Self
pub fn inet(&mut self) -> &mut Self
Set columnt type as inet. This is only supported on Postgres.
Sourcepub fn mac_address(&mut self) -> &mut Self
pub fn mac_address(&mut self) -> &mut Self
Set columnt type as macaddr. This is only supported on Postgres.
Sourcepub fn ltree(&mut self) -> &mut Self
pub fn ltree(&mut self) -> &mut Self
Set column type as ltree
This is only supported on Postgres.
use sea_query::{tests_cfg::*, *};
assert_eq!(
Table::create()
.table(Glyph::Table)
.col(
ColumnDef::new(Glyph::Id)
.integer()
.not_null()
.auto_increment()
.primary_key()
)
.col(ColumnDef::new(Glyph::Tokens).ltree())
.to_string(PostgresQueryBuilder),
[
r#"CREATE TABLE "glyph" ("#,
r#""id" serial NOT NULL PRIMARY KEY,"#,
r#""tokens" ltree"#,
r#")"#,
]
.join(" ")
);
Sourcepub fn check<T>(&mut self, value: T) -> &mut Selfwhere
T: Into<SimpleExpr>,
pub fn check<T>(&mut self, value: T) -> &mut Selfwhere
T: Into<SimpleExpr>,
Set constraints as SimpleExpr
use sea_query::{tests_cfg::*, *};
assert_eq!(
Table::create()
.table(Glyph::Table)
.col(
ColumnDef::new(Glyph::Id)
.integer()
.not_null()
.check(Expr::col(Glyph::Id).gt(10))
)
.to_string(MysqlQueryBuilder),
r#"CREATE TABLE `glyph` ( `id` int NOT NULL CHECK (`id` > 10) )"#,
);
Sourcepub fn generated<T>(&mut self, expr: T, stored: bool) -> &mut Selfwhere
T: Into<SimpleExpr>,
pub fn generated<T>(&mut self, expr: T, stored: bool) -> &mut Selfwhere
T: Into<SimpleExpr>,
Sets the column as generated with SimpleExpr
Sourcepub fn extra<T>(&mut self, string: T) -> &mut Self
pub fn extra<T>(&mut self, string: T) -> &mut Self
Some extra options in custom string
use sea_query::{tests_cfg::*, *};
let table = Table::create()
.table(Char::Table)
.col(
ColumnDef::new(Char::Id)
.uuid()
.extra("DEFAULT gen_random_uuid()")
.primary_key()
.not_null(),
)
.col(
ColumnDef::new(Char::CreatedAt)
.timestamp_with_time_zone()
.extra("DEFAULT NOW()")
.not_null(),
)
.to_owned();
assert_eq!(
table.to_string(PostgresQueryBuilder),
[
r#"CREATE TABLE "character" ("#,
r#""id" uuid DEFAULT gen_random_uuid() PRIMARY KEY NOT NULL,"#,
r#""created_at" timestamp with time zone DEFAULT NOW() NOT NULL"#,
r#")"#,
]
.join(" ")
);