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<T>(&mut self, name: T) -> &mut ForeignKeyCreateStatementwhere
T: Into<String>,
pub fn name<T>(&mut self, name: T) -> &mut ForeignKeyCreateStatementwhere T: Into<String>,
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 build<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
pub fn build_any(&self, schema_builder: &dyn SchemaBuilder) -> String
pub fn to_string<T>(&self, schema_builder: T) -> Stringwhere
T: SchemaBuilder,
pub fn to_string<T>(&self, schema_builder: T) -> Stringwhere T: SchemaBuilder,
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