Trait diesel::prelude::Insertable
source · pub trait Insertable<T> {
type Values;
fn values(self) -> Self::Values;
fn insert_into(self, table: T) -> InsertStatement<T, Self::Values>
where
T: Table,
Self: Sized,
{ ... }
}
Expand description
Represents that a structure can be used to insert a new row into the
database. This is automatically implemented for &[T]
and &Vec<T>
for
inserting more than one record.
This trait can be derived
Required Associated Types§
Required Methods§
Provided Methods§
sourcefn insert_into(self, table: T) -> InsertStatement<T, Self::Values>where
T: Table,
Self: Sized,
fn insert_into(self, table: T) -> InsertStatement<T, Self::Values>where
T: Table,
Self: Sized,
Insert self
into a given table.
foo.insert_into(table)
is identical to insert_into(table).values(foo)
.
However, when inserting from a select statement,
this form is generally preferred.
Example
users::table
.select((
users::name.concat("'s First Post"),
users::id,
))
.insert_into(posts::table)
.into_columns((posts::title, posts::user_id))
.execute(conn)?;
let inserted_posts = posts::table
.select(posts::title)
.load::<String>(conn)?;
let expected = vec!["Sean's First Post", "Tess's First Post"];
assert_eq!(expected, inserted_posts);