Struct sea_query::query::InsertStatement [−][src]
pub struct InsertStatement { /* fields omitted */ }
Expand description
Insert any new rows into an existing table
Examples
use sea_query::{*, tests_cfg::*}; let query = Query::insert() .into_table(Glyph::Table) .columns(vec![ Glyph::Aspect, Glyph::Image, ]) .values_panic(vec![ 5.15.into(), "12A".into(), ]) .values_panic(vec![ 4.21.into(), "123".into(), ]) .to_owned(); assert_eq!( query.to_string(MysqlQueryBuilder), r#"INSERT INTO `glyph` (`aspect`, `image`) VALUES (5.15, '12A'), (4.21, '123')"# ); assert_eq!( query.to_string(PostgresQueryBuilder), r#"INSERT INTO "glyph" ("aspect", "image") VALUES (5.15, '12A'), (4.21, '123')"# ); assert_eq!( query.to_string(SqliteQueryBuilder), r#"INSERT INTO `glyph` (`aspect`, `image`) VALUES (5.15, '12A'), (4.21, '123')"# );
Implementations
Construct a new InsertStatement
pub fn columns<C, I>(&mut self, columns: I) -> &mut Self where
C: IntoIden,
I: IntoIterator<Item = C>,
pub fn columns<C, I>(&mut self, columns: I) -> &mut Self where
C: IntoIden,
I: IntoIterator<Item = C>,
Specify a row of values to be inserted.
Examples
use sea_query::{*, tests_cfg::*}; let query = Query::insert() .into_table(Glyph::Table) .columns(vec![ Glyph::Aspect, Glyph::Image, ]) .values(vec![ 2.1345.into(), "24B".into(), ]) .unwrap() .values_panic(vec![ 5.15.into(), "12A".into(), ]) .to_owned(); assert_eq!( query.to_string(MysqlQueryBuilder), r#"INSERT INTO `glyph` (`aspect`, `image`) VALUES (2.1345, '24B'), (5.15, '12A')"# ); assert_eq!( query.to_string(PostgresQueryBuilder), r#"INSERT INTO "glyph" ("aspect", "image") VALUES (2.1345, '24B'), (5.15, '12A')"# ); assert_eq!( query.to_string(SqliteQueryBuilder), r#"INSERT INTO `glyph` (`aspect`, `image`) VALUES (2.1345, '24B'), (5.15, '12A')"# );
Specify a row of values to be inserted, variation of InsertStatement::values
.
RETURNING expressions. Postgres only.
use sea_query::{*, tests_cfg::*}; let query = Query::insert() .into_table(Glyph::Table) .columns(vec![ Glyph::Image, ]) .values_panic(vec![ "12A".into(), ]) .returning(Query::select().column(Glyph::Id).take()) .to_owned(); assert_eq!( query.to_string(MysqlQueryBuilder), "INSERT INTO `glyph` (`image`) VALUES ('12A')" ); assert_eq!( query.to_string(PostgresQueryBuilder), r#"INSERT INTO "glyph" ("image") VALUES ('12A') RETURNING "id""# ); assert_eq!( query.to_string(SqliteQueryBuilder), "INSERT INTO `glyph` (`image`) VALUES ('12A')" );
RETURNING a column after insertion. Postgres only. This is equivalent to MySQL’s LAST_INSERT_ID.
Wrapper over InsertStatement::returning()
.
use sea_query::{*, tests_cfg::*}; let query = Query::insert() .into_table(Glyph::Table) .columns(vec![ Glyph::Image, ]) .values_panic(vec![ "12A".into(), ]) .returning_col(Glyph::Id) .to_owned(); assert_eq!( query.to_string(MysqlQueryBuilder), "INSERT INTO `glyph` (`image`) VALUES ('12A')" ); assert_eq!( query.to_string(PostgresQueryBuilder), r#"INSERT INTO "glyph" ("image") VALUES ('12A') RETURNING "id""# ); assert_eq!( query.to_string(SqliteQueryBuilder), "INSERT INTO `glyph` (`image`) VALUES ('12A')" );
This is supported on crate feature with-json
only.
with-json
only.Specify a row of values to be inserted, taking a JSON Object as input.
Will panic if object
is not serde_json::Value::Object.
Example
use sea_query::{*, tests_cfg::*}; let query = Query::insert() .into_table(Glyph::Table) .columns(vec![ Glyph::Aspect, Glyph::Image, ]) .json(json!({ "aspect": 2.1345, "image": "24B", })) .json(json!({ "aspect": 4.21, "image": "123", })) .to_owned(); assert_eq!( query.to_string(MysqlQueryBuilder), r#"INSERT INTO `glyph` (`aspect`, `image`) VALUES (2.1345, '24B'), (4.21, '123')"# ); assert_eq!( query.to_string(PostgresQueryBuilder), r#"INSERT INTO "glyph" ("aspect", "image") VALUES (2.1345, '24B'), (4.21, '123')"# ); assert_eq!( query.to_string(SqliteQueryBuilder), r#"INSERT INTO `glyph` (`aspect`, `image`) VALUES (2.1345, '24B'), (4.21, '123')"# );
Trait Implementations
Returns the “default value” for a type. Read more
fn build_collect<T: QueryBuilder>(
&self,
query_builder: T,
collector: &mut dyn FnMut(Value)
) -> String
fn build_collect<T: QueryBuilder>(
&self,
query_builder: T,
collector: &mut dyn FnMut(Value)
) -> String
Build corresponding SQL statement for certain database backend and collect query parameters
Examples
use sea_query::{*, tests_cfg::*}; let query = Query::insert() .into_table(Glyph::Table) .columns(vec![ Glyph::Aspect, Glyph::Image, ]) .values_panic(vec![ 3.1415.into(), "041080".into(), ]) .to_owned(); assert_eq!( query.to_string(MysqlQueryBuilder), r#"INSERT INTO `glyph` (`aspect`, `image`) VALUES (3.1415, '041080')"# ); let mut params = Vec::new(); let mut collector = |v| params.push(v); assert_eq!( query.build_collect(MysqlQueryBuilder, &mut collector), r#"INSERT INTO `glyph` (`aspect`, `image`) VALUES (?, ?)"# ); assert_eq!( params, vec![ Value::Double(3.1415), Value::String(Box::new(String::from("041080"))), ] );
fn build_collect_any(
&self,
query_builder: &dyn QueryBuilder,
collector: &mut dyn FnMut(Value)
) -> String
fn build_collect_any(
&self,
query_builder: &dyn QueryBuilder,
collector: &mut dyn FnMut(Value)
) -> String
Build corresponding SQL statement for certain database backend and collect query parameters
Build corresponding SQL statement for certain database backend and return SQL string Read more
Build corresponding SQL statement for certain database backend and collect query parameters into a vector Read more
Auto Trait Implementations
impl !RefUnwindSafe for InsertStatement
impl Send for InsertStatement
impl Sync for InsertStatement
impl Unpin for InsertStatement
impl !UnwindSafe for InsertStatement
Blanket Implementations
Mutably borrows from an owned value. Read more
type Output = T
type Output = T
Should always be Self