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),
vec![
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),
vec![
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),
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"#,
]
.join(" ")
);
assert_eq!(
foreign_key.to_string(PostgresQueryBuilder),
vec![
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
sourceimpl ForeignKeyCreateStatement
impl ForeignKeyCreateStatement
sourcepub fn new() -> Self
pub fn new() -> Self
Construct a new ForeignKeyCreateStatement
sourcepub fn table<T: 'static, R: 'static>(
&mut self,
table: T,
ref_table: R
) -> &mut Self where
T: Iden,
R: Iden,
👎 Deprecated since 0.10.2: Please use the [ForeignKeyCreateStatement::from
] and [ForeignKeyCreateStatement::to
]
pub fn table<T: 'static, R: 'static>(
&mut self,
table: T,
ref_table: R
) -> &mut Self where
T: Iden,
R: Iden,
Please use the [ForeignKeyCreateStatement::from
] and [ForeignKeyCreateStatement::to
]
Set key table and referencing table
sourcepub fn col<T: 'static, R: 'static>(
&mut self,
column: T,
ref_column: R
) -> &mut Self where
T: Iden,
R: Iden,
👎 Deprecated since 0.10.2: Please use the [ForeignKeyCreateStatement::from
] and [ForeignKeyCreateStatement::to
]
pub fn col<T: 'static, R: 'static>(
&mut self,
column: T,
ref_column: R
) -> &mut Self where
T: Iden,
R: Iden,
Please use the [ForeignKeyCreateStatement::from
] and [ForeignKeyCreateStatement::to
]
Set key column and referencing column
sourcepub fn from<T, C>(&mut self, table: T, columns: C) -> &mut Self where
T: IntoIden,
C: IdenList,
pub fn from<T, C>(&mut self, table: T, columns: C) -> &mut Self where
T: IntoIden,
C: IdenList,
Set key table and columns
sourcepub fn to<T, C>(&mut self, table: T, columns: C) -> &mut Self where
T: IntoIden,
C: IdenList,
pub fn to<T, C>(&mut self, table: T, columns: C) -> &mut Self where
T: IntoIden,
C: IdenList,
Set referencing table and columns
sourcepub fn to_tbl<R>(&mut self, ref_table: R) -> &mut Self where
R: IntoIden,
pub fn to_tbl<R>(&mut self, ref_table: R) -> &mut Self where
R: IntoIden,
Set referencing table
sourcepub fn to_col<R>(&mut self, ref_column: R) -> &mut Self where
R: IntoIden,
pub fn to_col<R>(&mut self, ref_column: R) -> &mut Self where
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
sourceimpl 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
sourceimpl Clone for ForeignKeyCreateStatement
impl Clone for ForeignKeyCreateStatement
sourcefn clone(&self) -> ForeignKeyCreateStatement
fn clone(&self) -> ForeignKeyCreateStatement
Returns a copy of the value. Read more
1.0.0 · sourcefn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
Performs copy-assignment from source
. Read more
sourceimpl Debug for ForeignKeyCreateStatement
impl Debug for ForeignKeyCreateStatement
sourceimpl Default for ForeignKeyCreateStatement
impl Default for ForeignKeyCreateStatement
sourceimpl SchemaStatementBuilder for ForeignKeyCreateStatement
impl SchemaStatementBuilder for ForeignKeyCreateStatement
sourcefn 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
sourcefn 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
sourcefn 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 !RefUnwindSafe for ForeignKeyCreateStatement
impl Send for ForeignKeyCreateStatement
impl Sync for ForeignKeyCreateStatement
impl Unpin for ForeignKeyCreateStatement
impl !UnwindSafe for ForeignKeyCreateStatement
Blanket Implementations
sourceimpl<T> BorrowMut<T> for T where
T: ?Sized,
impl<T> BorrowMut<T> for T where
T: ?Sized,
const: unstable · sourcepub fn borrow_mut(&mut self) -> &mut T
pub fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more
sourceimpl<T> ToOwned for T where
T: Clone,
impl<T> ToOwned for T where
T: Clone,
type Owned = T
type Owned = T
The resulting type after obtaining ownership.
sourcepub fn to_owned(&self) -> T
pub fn to_owned(&self) -> T
Creates owned data from borrowed data, usually by cloning. Read more
sourcepub fn clone_into(&self, target: &mut T)
pub fn clone_into(&self, target: &mut T)
toowned_clone_into
)Uses borrowed data to replace owned data, usually by cloning. Read more