Struct sea_query::foreign_key::ForeignKeyCreateStatement
source ยท pub struct ForeignKeyCreateStatement { /* private fields */ }
Expand description
Create a foreign key constraint for an existing table. Unsupported by Sqlite
Examples
use sea_query::{tests_cfg::*, *};
let foreign_key = ForeignKey::create()
.name("FK_character_font")
.from(Char::Table, Char::FontId)
.to(Font::Table, Font::Id)
.on_delete(ForeignKeyAction::Cascade)
.on_update(ForeignKeyAction::Cascade)
.to_owned();
assert_eq!(
foreign_key.to_string(MysqlQueryBuilder),
[
r#"ALTER TABLE `character`"#,
r#"ADD CONSTRAINT `FK_character_font`"#,
r#"FOREIGN KEY (`font_id`) REFERENCES `font` (`id`)"#,
r#"ON DELETE CASCADE ON UPDATE CASCADE"#,
]
.join(" ")
);
assert_eq!(
foreign_key.to_string(PostgresQueryBuilder),
[
r#"ALTER TABLE "character" ADD CONSTRAINT "FK_character_font""#,
r#"FOREIGN KEY ("font_id") REFERENCES "font" ("id")"#,
r#"ON DELETE CASCADE ON UPDATE CASCADE"#,
]
.join(" ")
);
Composite key
use sea_query::{tests_cfg::*, *};
let foreign_key = ForeignKey::create()
.name("FK_character_glyph")
.from(Char::Table, (Char::FontId, Char::Id))
.to(Glyph::Table, (Char::FontId, Glyph::Id))
.on_delete(ForeignKeyAction::Cascade)
.on_update(ForeignKeyAction::Cascade)
.to_owned();
assert_eq!(
foreign_key.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"#,
]
.join(" ")
);
assert_eq!(
foreign_key.to_string(PostgresQueryBuilder),
[
r#"ALTER TABLE "character" ADD CONSTRAINT "FK_character_glyph""#,
r#"FOREIGN KEY ("font_id", "id") REFERENCES "glyph" ("font_id", "id")"#,
r#"ON DELETE CASCADE ON UPDATE CASCADE"#,
]
.join(" ")
);
Implementationsยง
sourceยงimpl ForeignKeyCreateStatement
impl ForeignKeyCreateStatement
sourcepub fn new() -> Self
pub fn new() -> Self
Construct a new ForeignKeyCreateStatement
sourcepub fn from<T, C>(&mut self, table: T, columns: C) -> &mut Selfwhere
T: IntoTableRef,
C: IdenList,
pub fn from<T, C>(&mut self, table: T, columns: C) -> &mut Selfwhere
T: IntoTableRef,
C: IdenList,
Set key table and columns
sourcepub fn to<T, C>(&mut self, table: T, columns: C) -> &mut Selfwhere
T: IntoTableRef,
C: IdenList,
pub fn to<T, C>(&mut self, table: T, columns: C) -> &mut Selfwhere
T: IntoTableRef,
C: IdenList,
Set referencing table and columns
sourcepub fn from_tbl<T>(&mut self, table: T) -> &mut Selfwhere
T: IntoTableRef,
pub fn from_tbl<T>(&mut self, table: T) -> &mut Selfwhere
T: IntoTableRef,
Set key table
sourcepub fn to_tbl<R>(&mut self, ref_table: R) -> &mut Selfwhere
R: IntoTableRef,
pub fn to_tbl<R>(&mut self, ref_table: R) -> &mut Selfwhere
R: IntoTableRef,
Set referencing table
sourcepub fn to_col<R>(&mut self, ref_column: R) -> &mut Selfwhere
R: IntoIden,
pub fn to_col<R>(&mut self, ref_column: R) -> &mut Selfwhere
R: IntoIden,
Add referencing column
sourcepub fn on_delete(&mut self, action: ForeignKeyAction) -> &mut Self
pub fn on_delete(&mut self, action: ForeignKeyAction) -> &mut Self
Set on delete action
sourcepub fn on_update(&mut self, action: ForeignKeyAction) -> &mut Self
pub fn on_update(&mut self, action: ForeignKeyAction) -> &mut Self
Set on update action
pub fn get_foreign_key(&self) -> &TableForeignKey
pub fn take(&mut self) -> Self
sourceยงimpl ForeignKeyCreateStatement
impl ForeignKeyCreateStatement
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 ForeignKeyCreateStatement
impl Clone for ForeignKeyCreateStatement
sourceยงfn clone(&self) -> ForeignKeyCreateStatement
fn clone(&self) -> ForeignKeyCreateStatement
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 ForeignKeyCreateStatement
impl Debug for ForeignKeyCreateStatement
sourceยงimpl Default for ForeignKeyCreateStatement
impl Default for ForeignKeyCreateStatement
sourceยงfn default() -> ForeignKeyCreateStatement
fn default() -> ForeignKeyCreateStatement
Returns the โdefault valueโ for a type. Read more
sourceยงimpl SchemaStatementBuilder for ForeignKeyCreateStatement
impl SchemaStatementBuilder for ForeignKeyCreateStatement
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