Struct sea_query::table::TableCreateStatement [−][src]
pub struct TableCreateStatement { /* fields omitted */ }
Expand description
Create a table
Examples
use sea_query::{*, tests_cfg::*};
let table = Table::create()
.table(Char::Table)
.if_not_exists()
.col(ColumnDef::new(Char::Id).integer().not_null().auto_increment().primary_key())
.col(ColumnDef::new(Char::FontSize).integer().not_null())
.col(ColumnDef::new(Char::Character).string().not_null())
.col(ColumnDef::new(Char::SizeW).integer().not_null())
.col(ColumnDef::new(Char::SizeH).integer().not_null())
.col(ColumnDef::new(Char::FontId).integer().default(Value::Int(None)))
.foreign_key(
ForeignKey::create()
.name("FK_2e303c3a712662f1fc2a4d0aad6")
.from(Char::Table, Char::FontId)
.to(Font::Table, Font::Id)
.on_delete(ForeignKeyAction::Cascade)
.on_update(ForeignKeyAction::Cascade)
)
.to_owned();
assert_eq!(
table.to_string(MysqlQueryBuilder),
vec![
r#"CREATE TABLE IF NOT EXISTS `character` ("#,
r#"`id` int NOT NULL AUTO_INCREMENT PRIMARY KEY,"#,
r#"`font_size` int NOT NULL,"#,
r#"`character` varchar(255) NOT NULL,"#,
r#"`size_w` int NOT NULL,"#,
r#"`size_h` int NOT NULL,"#,
r#"`font_id` int DEFAULT NULL,"#,
r#"CONSTRAINT `FK_2e303c3a712662f1fc2a4d0aad6`"#,
r#"FOREIGN KEY (`font_id`) REFERENCES `font` (`id`)"#,
r#"ON DELETE CASCADE ON UPDATE CASCADE"#,
r#")"#,
].join(" ")
);
assert_eq!(
table.to_string(PostgresQueryBuilder),
vec![
r#"CREATE TABLE IF NOT EXISTS "character" ("#,
r#""id" serial NOT NULL PRIMARY KEY,"#,
r#""font_size" integer NOT NULL,"#,
r#""character" varchar NOT NULL,"#,
r#""size_w" integer NOT NULL,"#,
r#""size_h" integer NOT NULL,"#,
r#""font_id" integer DEFAULT NULL,"#,
r#"CONSTRAINT "FK_2e303c3a712662f1fc2a4d0aad6""#,
r#"FOREIGN KEY ("font_id") REFERENCES "font" ("id")"#,
r#"ON DELETE CASCADE ON UPDATE CASCADE"#,
r#")"#,
].join(" ")
);
assert_eq!(
table.to_string(SqliteQueryBuilder),
vec![
r#"CREATE TABLE IF NOT EXISTS `character` ("#,
r#"`id` integer NOT NULL PRIMARY KEY AUTOINCREMENT,"#,
r#"`font_size` integer NOT NULL,"#,
r#"`character` text NOT NULL,"#,
r#"`size_w` integer NOT NULL,"#,
r#"`size_h` integer NOT NULL,"#,
r#"`font_id` integer DEFAULT NULL,"#,
r#"FOREIGN KEY (`font_id`) REFERENCES `font` (`id`) ON DELETE CASCADE ON UPDATE CASCADE"#,
r#")"#,
].join(" ")
);
Implementations
👎 Deprecated since 0.9.6:
Please use the [TableCreateStatement::if_not_exists
]
Create table if table not exists
Add an index. MySQL only.
Examples
use sea_query::{*, tests_cfg::*};
assert_eq!(
Table::create()
.table(Glyph::Table)
.col(ColumnDef::new(Glyph::Id).integer().not_null())
.index(
Index::create()
.unique()
.name("idx-glyph-id")
.col(Glyph::Id)
)
.to_string(MysqlQueryBuilder),
vec![
"CREATE TABLE `glyph` (",
"`id` int NOT NULL,",
"UNIQUE KEY `idx-glyph-id` (`id`)",
")",
].join(" ")
);
Add an primary key.
Examples
use sea_query::{*, tests_cfg::*};
let mut statement = Table::create();
statement
.table(Glyph::Table)
.col(ColumnDef::new(Glyph::Id).integer().not_null())
.col(ColumnDef::new(Glyph::Image).string().not_null())
.primary_key(
Index::create()
.col(Glyph::Id)
.col(Glyph::Image)
);
assert_eq!(statement.to_string(MysqlQueryBuilder),
vec![
"CREATE TABLE `glyph` (",
"`id` int NOT NULL,",
"`image` varchar(255) NOT NULL,",
"PRIMARY KEY (`id`, `image`)",
")",
].join(" ")
);
assert_eq!(statement.to_string(PostgresQueryBuilder),
vec![
"CREATE TABLE \"glyph\" (",
"\"id\" integer NOT NULL,",
"\"image\" varchar NOT NULL,",
"PRIMARY KEY (\"id\", \"image\")",
")",
].join(" ")
);
assert_eq!(statement.to_string(SqliteQueryBuilder),
vec![
"CREATE TABLE `glyph` (",
"`id` integer NOT NULL,",
"`image` text NOT NULL,",
"PRIMARY KEY (`id`, `image`)",
")",
].join(" ")
);
Add a foreign key
Set database character set. MySQL only.
Trait Implementations
Build corresponding SQL statement for certain database backend and return SQL string
Build corresponding SQL statement for certain database backend and return SQL string
Build corresponding SQL statement for certain database backend and return SQL string
Auto Trait Implementations
impl !RefUnwindSafe for TableCreateStatement
impl Send for TableCreateStatement
impl Sync for TableCreateStatement
impl Unpin for TableCreateStatement
impl !UnwindSafe for TableCreateStatement
Blanket Implementations
Mutably borrows from an owned value. Read more
type Output = T
type Output = T
Should always be Self