Struct migration::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: 'static + Iden,
pub fn table<T>(&mut self, table: T) -> &mut TableAlterStatementwhere T: 'static + Iden,
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),
vec![
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: 'static + Iden,
R: 'static + Iden,
pub fn rename_column<T, R>( &mut self, from_name: T, to_name: R ) -> &mut TableAlterStatementwhere T: 'static + Iden, R: 'static + Iden,
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: 'static + Iden,
pub fn drop_column<T>(&mut self, col_name: T) -> &mut TableAlterStatementwhere T: 'static + Iden,
Add a column to 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),
vec![
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),
vec![
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),
vec![
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),
vec![
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
§impl StatementBuilder for TableAlterStatement
impl StatementBuilder for TableAlterStatement
§fn build(&self, db_backend: &DatabaseBackend) -> Statement
fn build(&self, db_backend: &DatabaseBackend) -> Statement
Method to call in order to build a Statement