Struct Insert
pub struct Insert<A>where
    A: ActiveModelTrait,{
    pub(crate) query: InsertStatement,
    pub(crate) columns: Vec<bool>,
    pub(crate) primary_key: Option<ValueTuple>,
    pub(crate) model: PhantomData<A>,
}Expand description
Performs INSERT operations on a ActiveModel
Fields§
§query: InsertStatement§columns: Vec<bool>§primary_key: Option<ValueTuple>§model: PhantomData<A>Implementations§
§impl<A> Insert<A>where
    A: ActiveModelTrait,
 
impl<A> Insert<A>where
    A: ActiveModelTrait,
pub fn exec<'a, C>(
    self,
    db: &'a C,
) -> impl Future<Output = Result<InsertResult<A>, DbErr>> + 'awhere
    C: ConnectionTrait,
    A: 'a,
pub fn exec<'a, C>(
    self,
    db: &'a C,
) -> impl Future<Output = Result<InsertResult<A>, DbErr>> + 'awhere
    C: ConnectionTrait,
    A: 'a,
Execute an insert operation
pub fn exec_without_returning<'a, C>(
    self,
    db: &'a C,
) -> impl Future<Output = Result<u64, DbErr>> + 'awhere
    <<A as ActiveModelTrait>::Entity as EntityTrait>::Model: IntoActiveModel<A>,
    C: ConnectionTrait,
    A: 'a,
pub fn exec_without_returning<'a, C>(
    self,
    db: &'a C,
) -> impl Future<Output = Result<u64, DbErr>> + 'awhere
    <<A as ActiveModelTrait>::Entity as EntityTrait>::Model: IntoActiveModel<A>,
    C: ConnectionTrait,
    A: 'a,
Execute an insert operation without returning (don’t use RETURNING syntax)
Number of rows affected is returned
pub fn exec_with_returning<'a, C>(
    self,
    db: &'a C,
) -> impl Future<Output = Result<<<A as ActiveModelTrait>::Entity as EntityTrait>::Model, DbErr>> + 'awhere
    <<A as ActiveModelTrait>::Entity as EntityTrait>::Model: IntoActiveModel<A>,
    C: ConnectionTrait,
    A: 'a,
pub fn exec_with_returning<'a, C>(
    self,
    db: &'a C,
) -> impl Future<Output = Result<<<A as ActiveModelTrait>::Entity as EntityTrait>::Model, DbErr>> + 'awhere
    <<A as ActiveModelTrait>::Entity as EntityTrait>::Model: IntoActiveModel<A>,
    C: ConnectionTrait,
    A: 'a,
Execute an insert operation and return the inserted model (use RETURNING syntax if supported)
§impl<A> Insert<A>where
    A: ActiveModelTrait,
 
impl<A> Insert<A>where
    A: ActiveModelTrait,
pub fn one<M>(m: M) -> Insert<A>where
    M: IntoActiveModel<A>,
pub fn one<M>(m: M) -> Insert<A>where
    M: IntoActiveModel<A>,
Insert one Model or ActiveModel
Model
use sea_orm::{entity::*, query::*, tests_cfg::cake, DbBackend};
assert_eq!(
    Insert::one(cake::Model {
        id: 1,
        name: "Apple Pie".to_owned(),
    })
    .build(DbBackend::Postgres)
    .to_string(),
    r#"INSERT INTO "cake" ("id", "name") VALUES (1, 'Apple Pie')"#,
);ActiveModel
use sea_orm::{entity::*, query::*, tests_cfg::cake, DbBackend};
assert_eq!(
    Insert::one(cake::ActiveModel {
        id: NotSet,
        name: Set("Apple Pie".to_owned()),
    })
    .build(DbBackend::Postgres)
    .to_string(),
    r#"INSERT INTO "cake" ("name") VALUES ('Apple Pie')"#,
);pub fn many<M, I>(models: I) -> Insert<A>where
    M: IntoActiveModel<A>,
    I: IntoIterator<Item = M>,
pub fn many<M, I>(models: I) -> Insert<A>where
    M: IntoActiveModel<A>,
    I: IntoIterator<Item = M>,
Insert many Model or ActiveModel
use sea_orm::{entity::*, query::*, tests_cfg::cake, DbBackend};
assert_eq!(
    Insert::many([
        cake::Model {
            id: 1,
            name: "Apple Pie".to_owned(),
        },
        cake::Model {
            id: 2,
            name: "Orange Scone".to_owned(),
        }
    ])
    .build(DbBackend::Postgres)
    .to_string(),
    r#"INSERT INTO "cake" ("id", "name") VALUES (1, 'Apple Pie'), (2, 'Orange Scone')"#,
);pub fn add<M>(self, m: M) -> Insert<A>where
    M: IntoActiveModel<A>,
pub fn add<M>(self, m: M) -> Insert<A>where
    M: IntoActiveModel<A>,
pub fn add_many<M, I>(self, models: I) -> Insert<A>where
    M: IntoActiveModel<A>,
    I: IntoIterator<Item = M>,
pub fn add_many<M, I>(self, models: I) -> Insert<A>where
    M: IntoActiveModel<A>,
    I: IntoIterator<Item = M>,
Add many Models to Self
pub fn on_conflict(self, on_conflict: OnConflict) -> Insert<A>
pub fn on_conflict(self, on_conflict: OnConflict) -> Insert<A>
On conflict
on conflict do nothing
use sea_orm::{entity::*, query::*, sea_query::OnConflict, tests_cfg::cake, DbBackend};
let orange = cake::ActiveModel {
    id: ActiveValue::set(2),
    name: ActiveValue::set("Orange".to_owned()),
};
assert_eq!(
    cake::Entity::insert(orange)
        .on_conflict(
            OnConflict::column(cake::Column::Name)
                .do_nothing()
                .to_owned()
        )
        .build(DbBackend::Postgres)
        .to_string(),
    r#"INSERT INTO "cake" ("id", "name") VALUES (2, 'Orange') ON CONFLICT ("name") DO NOTHING"#,
);on conflict do update
use sea_orm::{entity::*, query::*, sea_query::OnConflict, tests_cfg::cake, DbBackend};
let orange = cake::ActiveModel {
    id: ActiveValue::set(2),
    name: ActiveValue::set("Orange".to_owned()),
};
assert_eq!(
    cake::Entity::insert(orange)
        .on_conflict(
            OnConflict::column(cake::Column::Name)
                .update_column(cake::Column::Name)
                .to_owned()
        )
        .build(DbBackend::Postgres)
        .to_string(),
    r#"INSERT INTO "cake" ("id", "name") VALUES (2, 'Orange') ON CONFLICT ("name") DO UPDATE SET "name" = "excluded"."name""#,
);pub fn do_nothing(self) -> TryInsert<A>where
    A: ActiveModelTrait,
pub fn do_nothing(self) -> TryInsert<A>where
    A: ActiveModelTrait,
Allow insert statement return safely if inserting nothing. The database will not be affected.
pub fn on_empty_do_nothing(self) -> TryInsert<A>where
    A: ActiveModelTrait,
pub fn on_empty_do_nothing(self) -> TryInsert<A>where
    A: ActiveModelTrait,
alias to do_nothing
pub fn on_conflict_do_nothing(self) -> TryInsert<A>where
    A: ActiveModelTrait,
pub fn on_conflict_do_nothing(self) -> TryInsert<A>where
    A: ActiveModelTrait,
Set ON CONFLICT on primary key do nothing, but with MySQL specific polyfill.
use sea_orm::{entity::*, query::*, sea_query::OnConflict, tests_cfg::cake, DbBackend};
let orange = cake::ActiveModel {
    id: ActiveValue::set(2),
    name: ActiveValue::set("Orange".to_owned()),
};
assert_eq!(
    cake::Entity::insert(orange.clone())
        .on_conflict_do_nothing()
        .build(DbBackend::MySql)
        .to_string(),
    r#"INSERT INTO `cake` (`id`, `name`) VALUES (2, 'Orange') ON DUPLICATE KEY UPDATE `id` = `id`"#,
);
assert_eq!(
    cake::Entity::insert(orange.clone())
        .on_conflict_do_nothing()
        .build(DbBackend::Postgres)
        .to_string(),
    r#"INSERT INTO "cake" ("id", "name") VALUES (2, 'Orange') ON CONFLICT ("id") DO NOTHING"#,
);
assert_eq!(
    cake::Entity::insert(orange)
        .on_conflict_do_nothing()
        .build(DbBackend::Sqlite)
        .to_string(),
    r#"INSERT INTO "cake" ("id", "name") VALUES (2, 'Orange') ON CONFLICT ("id") DO NOTHING"#,
);Trait Implementations§
§impl<A> Debug for Insert<A>where
    A: Debug + ActiveModelTrait,
 
impl<A> Debug for Insert<A>where
    A: Debug + ActiveModelTrait,
§impl<A> Default for Insert<A>where
    A: ActiveModelTrait,
 
impl<A> Default for Insert<A>where
    A: ActiveModelTrait,
§impl<A> QueryTrait for Insert<A>where
    A: ActiveModelTrait,
 
impl<A> QueryTrait for Insert<A>where
    A: ActiveModelTrait,
§type QueryStatement = InsertStatement
 
type QueryStatement = InsertStatement
Constrain the QueryStatement to QueryStatementBuilder trait
§fn query(&mut self) -> &mut InsertStatement
 
fn query(&mut self) -> &mut InsertStatement
Get a mutable ref to the query builder
§fn as_query(&self) -> &InsertStatement
 
fn as_query(&self) -> &InsertStatement
Get an immutable ref to the query builder
§fn into_query(self) -> InsertStatement
 
fn into_query(self) -> InsertStatement
Take ownership of the query builder
§fn build(&self, db_backend: DatabaseBackend) -> Statement
 
fn build(&self, db_backend: DatabaseBackend) -> Statement
Build the query as 
StatementAuto Trait Implementations§
impl<A> Freeze for Insert<A>
impl<A> !RefUnwindSafe for Insert<A>
impl<A> Send for Insert<A>where
    A: Send,
impl<A> Sync for Insert<A>where
    A: Sync,
impl<A> Unpin for Insert<A>where
    A: Unpin,
impl<A> !UnwindSafe for Insert<A>
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
§impl<T> Instrument for T
 
impl<T> Instrument for T
§fn instrument(self, span: Span) -> Instrumented<Self>
 
fn instrument(self, span: Span) -> Instrumented<Self>
§fn in_current_span(self) -> Instrumented<Self>
 
fn in_current_span(self) -> Instrumented<Self>
Source§impl<T> IntoEither for T
 
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ
 
fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ
Converts 
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
 
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
Converts 
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read more