pub fn insert_into<T>(target: T) -> IncompleteInsertStatement<T, Insert>Expand description
Creates an INSERT statement for the target table.
You may add data by calling values() or default_values()
as shown in the examples.
Backends that support the RETURNING clause, such as PostgreSQL,
can return the inserted rows by calling .get_results instead of .execute.
§Examples
let rows_inserted = diesel::insert_into(users)
    .values(&name.eq("Sean"))
    .execute(&connection);
assert_eq!(Ok(1), rows_inserted);
let new_users = vec![
    name.eq("Tess"),
    name.eq("Jim"),
];
let rows_inserted = diesel::insert_into(users)
    .values(&new_users)
    .execute(&connection);
assert_eq!(Ok(2), rows_inserted);§Using a tuple for values
let new_user = (id.eq(1), name.eq("Sean"));
let rows_inserted = diesel::insert_into(users)
    .values(&new_user)
    .execute(&connection);
assert_eq!(Ok(1), rows_inserted);
let new_users = vec![
    (id.eq(2), name.eq("Tess")),
    (id.eq(3), name.eq("Jim")),
];
let rows_inserted = diesel::insert_into(users)
    .values(&new_users)
    .execute(&connection);
assert_eq!(Ok(2), rows_inserted);§Using struct for values
#[derive(Insertable)]
#[table_name = "users"]
struct NewUser<'a> {
    name: &'a str,
}
// Insert one record at a time
let new_user = NewUser { name: "Ruby Rhod" };
diesel::insert_into(users)
    .values(&new_user)
    .execute(&connection)
    .unwrap();
// Insert many records
let new_users = vec![
    NewUser { name: "Leeloo Multipass", },
    NewUser { name: "Korben Dallas", },
];
let inserted_names = diesel::insert_into(users)
    .values(&new_users)
    .execute(&connection)
    .unwrap();§Insert from select
When inserting from a select statement,
the column list can be specified with .into_columns.
(See also SelectStatement::insert_into, which generally
reads better for select statements)
let new_posts = users::table
    .select((
        users::name.concat("'s First Post"),
        users::id,
    ));
diesel::insert_into(posts::table)
    .values(new_posts)
    .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);§With return value
let inserted_names = diesel::insert_into(users)
    .values(&vec![
        name.eq("Diva Plavalaguna"),
        name.eq("Father Vito Cornelius"),
    ])
    .returning(name)
    .get_results(&connection);
assert_eq!(Ok(vec!["Diva Plavalaguna".to_string(), "Father Vito Cornelius".to_string()]), inserted_names);