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
sourcepub fn build<T: SchemaBuilder>(&self, schema_builder: T) -> String
pub fn build<T: SchemaBuilder>(&self, schema_builder: T) -> String
sourcepub fn build_any(&self, schema_builder: &dyn SchemaBuilder) -> String
pub fn build_any(&self, schema_builder: &dyn SchemaBuilder) -> String
sourcepub fn to_string<T: SchemaBuilder>(&self, schema_builder: T) -> String
pub fn to_string<T: SchemaBuilder>(&self, schema_builder: T) -> 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
Auto Trait Implementations§
impl Freeze for ForeignKeyCreateStatement
impl !RefUnwindSafe for ForeignKeyCreateStatement
impl Send for ForeignKeyCreateStatement
impl Sync for ForeignKeyCreateStatement
impl Unpin for ForeignKeyCreateStatement
impl !UnwindSafe for ForeignKeyCreateStatement
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
source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
source§unsafe fn clone_to_uninit(&self, dst: *mut T)
unsafe fn clone_to_uninit(&self, dst: *mut T)
🔬This is a nightly-only experimental API. (
clone_to_uninit
)