Struct sea_query::table::TableAlterStatement
source ยท pub struct TableAlterStatement { /* private fields */ }
Expand description
Alter a table
Examples
use sea_query::{tests_cfg::*, *};
let table = Table::alter()
.table(Font::Table)
.add_column(
ColumnDef::new(Alias::new("new_col"))
.integer()
.not_null()
.default(100),
)
.to_owned();
assert_eq!(
table.to_string(MysqlQueryBuilder),
r#"ALTER TABLE `font` ADD COLUMN `new_col` int NOT NULL DEFAULT 100"#
);
assert_eq!(
table.to_string(PostgresQueryBuilder),
r#"ALTER TABLE "font" ADD COLUMN "new_col" integer NOT NULL DEFAULT 100"#
);
assert_eq!(
table.to_string(SqliteQueryBuilder),
r#"ALTER TABLE "font" ADD COLUMN "new_col" integer NOT NULL DEFAULT 100"#,
);
Implementationsยง
sourceยงimpl TableAlterStatement
impl TableAlterStatement
sourcepub fn table<T>(&mut self, table: T) -> &mut Selfwhere
T: IntoTableRef,
pub fn table<T>(&mut self, table: T) -> &mut Selfwhere
T: IntoTableRef,
Set table name
sourcepub fn add_column(&mut self, column_def: &mut ColumnDef) -> &mut Self
pub fn add_column(&mut self, column_def: &mut ColumnDef) -> &mut Self
Add a column to an existing table
Examples
use sea_query::{tests_cfg::*, *};
let table = Table::alter()
.table(Font::Table)
.add_column(
ColumnDef::new(Alias::new("new_col"))
.integer()
.not_null()
.default(100),
)
.to_owned();
assert_eq!(
table.to_string(MysqlQueryBuilder),
r#"ALTER TABLE `font` ADD COLUMN `new_col` int NOT NULL DEFAULT 100"#
);
assert_eq!(
table.to_string(PostgresQueryBuilder),
r#"ALTER TABLE "font" ADD COLUMN "new_col" integer NOT NULL DEFAULT 100"#
);
assert_eq!(
table.to_string(SqliteQueryBuilder),
r#"ALTER TABLE "font" ADD COLUMN "new_col" integer NOT NULL DEFAULT 100"#,
);
sourcepub fn add_column_if_not_exists(
&mut self,
column_def: &mut ColumnDef
) -> &mut Self
pub fn add_column_if_not_exists(
&mut self,
column_def: &mut ColumnDef
) -> &mut Self
Try add a column to an existing table if it does not exists
Examples
use sea_query::{tests_cfg::*, *};
let table = Table::alter()
.table(Font::Table)
.add_column_if_not_exists(
ColumnDef::new(Alias::new("new_col"))
.integer()
.not_null()
.default(100),
)
.to_owned();
assert_eq!(
table.to_string(MysqlQueryBuilder),
r#"ALTER TABLE `font` ADD COLUMN IF NOT EXISTS `new_col` int NOT NULL DEFAULT 100"#
);
assert_eq!(
table.to_string(PostgresQueryBuilder),
r#"ALTER TABLE "font" ADD COLUMN IF NOT EXISTS "new_col" integer NOT NULL DEFAULT 100"#
);
assert_eq!(
table.to_string(SqliteQueryBuilder),
r#"ALTER TABLE "font" ADD COLUMN "new_col" integer NOT NULL DEFAULT 100"#,
);
sourcepub fn modify_column(&mut self, column_def: &mut ColumnDef) -> &mut Self
pub fn modify_column(&mut self, column_def: &mut ColumnDef) -> &mut Self
Modify a column in an existing table
Examples
use sea_query::{tests_cfg::*, *};
let table = Table::alter()
.table(Font::Table)
.modify_column(
ColumnDef::new(Alias::new("new_col"))
.big_integer()
.default(999),
)
.to_owned();
assert_eq!(
table.to_string(MysqlQueryBuilder),
r#"ALTER TABLE `font` MODIFY COLUMN `new_col` bigint DEFAULT 999"#
);
assert_eq!(
table.to_string(PostgresQueryBuilder),
[
r#"ALTER TABLE "font""#,
r#"ALTER COLUMN "new_col" TYPE bigint,"#,
r#"ALTER COLUMN "new_col" SET DEFAULT 999"#,
]
.join(" ")
);
// Sqlite not support modifying table column
sourcepub fn rename_column<T, R>(&mut self, from_name: T, to_name: R) -> &mut Selfwhere
T: IntoIden,
R: IntoIden,
pub fn rename_column<T, R>(&mut self, from_name: T, to_name: R) -> &mut Selfwhere
T: IntoIden,
R: IntoIden,
Rename a column in an existing table
Examples
use sea_query::{tests_cfg::*, *};
let table = Table::alter()
.table(Font::Table)
.rename_column(Alias::new("new_col"), Alias::new("new_column"))
.to_owned();
assert_eq!(
table.to_string(MysqlQueryBuilder),
r#"ALTER TABLE `font` RENAME COLUMN `new_col` TO `new_column`"#
);
assert_eq!(
table.to_string(PostgresQueryBuilder),
r#"ALTER TABLE "font" RENAME COLUMN "new_col" TO "new_column""#
);
assert_eq!(
table.to_string(SqliteQueryBuilder),
r#"ALTER TABLE "font" RENAME COLUMN "new_col" TO "new_column""#
);
sourcepub fn drop_column<T>(&mut self, col_name: T) -> &mut Selfwhere
T: IntoIden,
pub fn drop_column<T>(&mut self, col_name: T) -> &mut Selfwhere
T: IntoIden,
Drop a column from an existing table
Examples
use sea_query::{tests_cfg::*, *};
let table = Table::alter()
.table(Font::Table)
.drop_column(Alias::new("new_column"))
.to_owned();
assert_eq!(
table.to_string(MysqlQueryBuilder),
r#"ALTER TABLE `font` DROP COLUMN `new_column`"#
);
assert_eq!(
table.to_string(PostgresQueryBuilder),
r#"ALTER TABLE "font" DROP COLUMN "new_column""#
);
assert_eq!(
table.to_string(SqliteQueryBuilder),
r#"ALTER TABLE "font" DROP COLUMN "new_column""#
);
sourcepub fn add_foreign_key(&mut self, foreign_key: &TableForeignKey) -> &mut Self
pub fn add_foreign_key(&mut self, foreign_key: &TableForeignKey) -> &mut Self
Add a foreign key to existing table
Examples
use sea_query::{tests_cfg::*, *};
let foreign_key_char = TableForeignKey::new()
.name("FK_character_glyph")
.from_tbl(Char::Table)
.from_col(Char::FontId)
.from_col(Char::Id)
.to_tbl(Glyph::Table)
.to_col(Char::FontId)
.to_col(Char::Id)
.on_delete(ForeignKeyAction::Cascade)
.on_update(ForeignKeyAction::Cascade)
.to_owned();
let foreign_key_font = TableForeignKey::new()
.name("FK_character_font")
.from_tbl(Char::Table)
.from_col(Char::FontId)
.to_tbl(Font::Table)
.to_col(Font::Id)
.on_delete(ForeignKeyAction::Cascade)
.on_update(ForeignKeyAction::Cascade)
.to_owned();
let table = Table::alter()
.table(Character::Table)
.add_foreign_key(&foreign_key_char)
.add_foreign_key(&foreign_key_font)
.to_owned();
assert_eq!(
table.to_string(MysqlQueryBuilder),
[
r#"ALTER TABLE `character`"#,
r#"ADD CONSTRAINT `FK_character_glyph`"#,
r#"FOREIGN KEY (`font_id`, `id`) REFERENCES `glyph` (`font_id`, `id`)"#,
r#"ON DELETE CASCADE ON UPDATE CASCADE,"#,
r#"ADD CONSTRAINT `FK_character_font`"#,
r#"FOREIGN KEY (`font_id`) REFERENCES `font` (`id`)"#,
r#"ON DELETE CASCADE ON UPDATE CASCADE"#,
]
.join(" ")
);
assert_eq!(
table.to_string(PostgresQueryBuilder),
[
r#"ALTER TABLE "character""#,
r#"ADD CONSTRAINT "FK_character_glyph""#,
r#"FOREIGN KEY ("font_id", "id") REFERENCES "glyph" ("font_id", "id")"#,
r#"ON DELETE CASCADE ON UPDATE CASCADE,"#,
r#"ADD CONSTRAINT "FK_character_font""#,
r#"FOREIGN KEY ("font_id") REFERENCES "font" ("id")"#,
r#"ON DELETE CASCADE ON UPDATE CASCADE"#,
]
.join(" ")
);
// Sqlite not support modifying table column
sourcepub fn drop_foreign_key<T>(&mut self, name: T) -> &mut Selfwhere
T: IntoIden,
pub fn drop_foreign_key<T>(&mut self, name: T) -> &mut Selfwhere
T: IntoIden,
Drop a foreign key from existing table
Examples
use sea_query::{tests_cfg::*, *};
let table = Table::alter()
.table(Character::Table)
.drop_foreign_key(Alias::new("FK_character_glyph"))
.drop_foreign_key(Alias::new("FK_character_font"))
.to_owned();
assert_eq!(
table.to_string(MysqlQueryBuilder),
[
r#"ALTER TABLE `character`"#,
r#"DROP FOREIGN KEY `FK_character_glyph`,"#,
r#"DROP FOREIGN KEY `FK_character_font`"#,
]
.join(" ")
);
assert_eq!(
table.to_string(PostgresQueryBuilder),
[
r#"ALTER TABLE "character""#,
r#"DROP CONSTRAINT "FK_character_glyph","#,
r#"DROP CONSTRAINT "FK_character_font""#,
]
.join(" ")
);
// Sqlite not support modifying table column
pub fn take(&mut self) -> Self
sourceยงimpl TableAlterStatement
impl TableAlterStatement
pub fn to_string<T: SchemaBuilder>(&self, schema_builder: T) -> String
pub fn build<T: SchemaBuilder>(&self, schema_builder: T) -> String
pub fn build_any(&self, schema_builder: &dyn SchemaBuilder) -> String
Trait Implementationsยง
sourceยงimpl Clone for TableAlterStatement
impl Clone for TableAlterStatement
sourceยงfn clone(&self) -> TableAlterStatement
fn clone(&self) -> TableAlterStatement
Returns a copy of the value. Read more
1.0.0 ยท sourceยงfn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
Performs copy-assignment from
source
. Read moresourceยงimpl Debug for TableAlterStatement
impl Debug for TableAlterStatement
sourceยงimpl Default for TableAlterStatement
impl Default for TableAlterStatement
sourceยงfn default() -> TableAlterStatement
fn default() -> TableAlterStatement
Returns the โdefault valueโ for a type. Read more
sourceยงimpl SchemaStatementBuilder for TableAlterStatement
impl SchemaStatementBuilder for TableAlterStatement
sourceยงfn build<T: SchemaBuilder>(&self, schema_builder: T) -> String
fn build<T: SchemaBuilder>(&self, schema_builder: T) -> String
Build corresponding SQL statement for certain database backend and return SQL string
sourceยงfn build_any(&self, schema_builder: &dyn SchemaBuilder) -> String
fn build_any(&self, schema_builder: &dyn SchemaBuilder) -> String
Build corresponding SQL statement for certain database backend and return SQL string
sourceยงfn to_string<T: SchemaBuilder>(&self, schema_builder: T) -> String
fn to_string<T: SchemaBuilder>(&self, schema_builder: T) -> String
Build corresponding SQL statement for certain database backend and return SQL string