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§
§impl ForeignKeyCreateStatement
impl ForeignKeyCreateStatement
pub fn new() -> ForeignKeyCreateStatement
pub fn new() -> ForeignKeyCreateStatement
Construct a new ForeignKeyCreateStatement
pub fn name(&mut self, name: &str) -> &mut ForeignKeyCreateStatement
pub fn name(&mut self, name: &str) -> &mut ForeignKeyCreateStatement
Set foreign key name
pub fn from<T, C>(
&mut self,
table: T,
columns: C
) -> &mut ForeignKeyCreateStatementwhere
T: IntoTableRef,
C: IdenList,
pub fn from<T, C>( &mut self, table: T, columns: C ) -> &mut ForeignKeyCreateStatementwhere T: IntoTableRef, C: IdenList,
Set key table and columns
pub fn to<T, C>(
&mut self,
table: T,
columns: C
) -> &mut ForeignKeyCreateStatementwhere
T: IntoTableRef,
C: IdenList,
pub fn to<T, C>( &mut self, table: T, columns: C ) -> &mut ForeignKeyCreateStatementwhere T: IntoTableRef, C: IdenList,
Set referencing table and columns
pub fn from_tbl<T>(&mut self, table: T) -> &mut ForeignKeyCreateStatementwhere
T: IntoTableRef,
pub fn from_tbl<T>(&mut self, table: T) -> &mut ForeignKeyCreateStatementwhere T: IntoTableRef,
Set key table
pub fn to_tbl<R>(&mut self, ref_table: R) -> &mut ForeignKeyCreateStatementwhere
R: IntoTableRef,
pub fn to_tbl<R>(&mut self, ref_table: R) -> &mut ForeignKeyCreateStatementwhere R: IntoTableRef,
Set referencing table
pub fn from_col<T>(&mut self, column: T) -> &mut ForeignKeyCreateStatementwhere
T: IntoIden,
pub fn from_col<T>(&mut self, column: T) -> &mut ForeignKeyCreateStatementwhere T: IntoIden,
Add key column
pub fn to_col<R>(&mut self, ref_column: R) -> &mut ForeignKeyCreateStatementwhere
R: IntoIden,
pub fn to_col<R>(&mut self, ref_column: R) -> &mut ForeignKeyCreateStatementwhere R: IntoIden,
Add referencing column
pub fn on_delete(
&mut self,
action: ForeignKeyAction
) -> &mut ForeignKeyCreateStatement
pub fn on_delete( &mut self, action: ForeignKeyAction ) -> &mut ForeignKeyCreateStatement
Set on delete action
pub fn on_update(
&mut self,
action: ForeignKeyAction
) -> &mut ForeignKeyCreateStatement
pub fn on_update( &mut self, action: ForeignKeyAction ) -> &mut ForeignKeyCreateStatement
Set on update action
pub fn get_foreign_key(&self) -> &TableForeignKey
pub fn take(&mut self) -> ForeignKeyCreateStatement
§impl ForeignKeyCreateStatement
impl ForeignKeyCreateStatement
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 ForeignKeyCreateStatement
impl Clone for ForeignKeyCreateStatement
§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 more§impl Debug for ForeignKeyCreateStatement
impl Debug for ForeignKeyCreateStatement
§impl Default for ForeignKeyCreateStatement
impl Default for ForeignKeyCreateStatement
§fn default() -> ForeignKeyCreateStatement
fn default() -> ForeignKeyCreateStatement
Returns the “default value” for a type. Read more
source§impl From<RelationDef> for ForeignKeyCreateStatement
impl From<RelationDef> for ForeignKeyCreateStatement
source§fn from(relation: RelationDef) -> ForeignKeyCreateStatement
fn from(relation: RelationDef) -> ForeignKeyCreateStatement
Converts to this type from the input type.
§impl SchemaStatementBuilder for ForeignKeyCreateStatement
impl SchemaStatementBuilder for ForeignKeyCreateStatement
§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 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