Struct sea_orm_migration::prelude::TableAlterStatement
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§
§impl TableAlterStatement
impl TableAlterStatement
pub fn new() -> TableAlterStatement
pub fn new() -> TableAlterStatement
Construct alter table statement
pub fn table<T>(&mut self, table: T) -> &mut TableAlterStatementwhere
T: IntoTableRef,
pub fn table<T>(&mut self, table: T) -> &mut TableAlterStatementwhere T: IntoTableRef,
Set table name
pub fn add_column(
&mut self,
column_def: &mut ColumnDef
) -> &mut TableAlterStatement
pub fn add_column( &mut self, column_def: &mut ColumnDef ) -> &mut TableAlterStatement
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"#,
);
pub fn add_column_if_not_exists(
&mut self,
column_def: &mut ColumnDef
) -> &mut TableAlterStatement
pub fn add_column_if_not_exists( &mut self, column_def: &mut ColumnDef ) -> &mut TableAlterStatement
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"#,
);
pub fn modify_column(
&mut self,
column_def: &mut ColumnDef
) -> &mut TableAlterStatement
pub fn modify_column( &mut self, column_def: &mut ColumnDef ) -> &mut TableAlterStatement
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
pub fn rename_column<T, R>(
&mut self,
from_name: T,
to_name: R
) -> &mut TableAlterStatementwhere
T: IntoIden,
R: IntoIden,
pub fn rename_column<T, R>( &mut self, from_name: T, to_name: R ) -> &mut TableAlterStatementwhere 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""#
);
pub fn drop_column<T>(&mut self, col_name: T) -> &mut TableAlterStatementwhere
T: IntoIden,
pub fn drop_column<T>(&mut self, col_name: T) -> &mut TableAlterStatementwhere 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""#
);
pub fn add_foreign_key(
&mut self,
foreign_key: &TableForeignKey
) -> &mut TableAlterStatement
pub fn add_foreign_key( &mut self, foreign_key: &TableForeignKey ) -> &mut TableAlterStatement
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
pub fn drop_foreign_key<T>(&mut self, name: T) -> &mut TableAlterStatementwhere
T: IntoIden,
pub fn drop_foreign_key<T>(&mut self, name: T) -> &mut TableAlterStatementwhere 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) -> TableAlterStatement
§impl TableAlterStatement
impl TableAlterStatement
pub fn to_string<T>(&self, schema_builder: T) -> Stringwhere T: SchemaBuilder,
pub fn build<T>(&self, schema_builder: T) -> Stringwhere T: SchemaBuilder,
pub fn build_any(&self, schema_builder: &dyn SchemaBuilder) -> String
Trait Implementations§
§impl Clone for TableAlterStatement
impl Clone for TableAlterStatement
§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 more§impl Debug for TableAlterStatement
impl Debug for TableAlterStatement
§impl Default for TableAlterStatement
impl Default for TableAlterStatement
§fn default() -> TableAlterStatement
fn default() -> TableAlterStatement
Returns the “default value” for a type. Read more
§impl SchemaStatementBuilder for TableAlterStatement
impl SchemaStatementBuilder for TableAlterStatement
§fn build<T>(&self, schema_builder: T) -> Stringwhere
T: SchemaBuilder,
fn build<T>(&self, schema_builder: T) -> Stringwhere T: SchemaBuilder,
Build corresponding SQL statement for certain database backend and return SQL string
§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
§fn to_string<T>(&self, schema_builder: T) -> Stringwhere
T: SchemaBuilder,
fn to_string<T>(&self, schema_builder: T) -> Stringwhere T: SchemaBuilder,
Build corresponding SQL statement for certain database backend and return SQL string
Auto Trait Implementations§
impl !RefUnwindSafe for TableAlterStatement
impl Send for TableAlterStatement
impl Sync for TableAlterStatement
impl Unpin for TableAlterStatement
impl !UnwindSafe for TableAlterStatement
Blanket Implementations§
source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere T: ?Sized,
source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more