Struct diesel::query_builder::DeleteStatement [−][src]
pub struct DeleteStatement<T, U, Ret = NoReturningClause> { /* fields omitted */ }Expand description
Represents a SQL DELETE statement.
The type parameters on this struct represent:
T: The table we are deleting from.U: TheWHEREclause of this query. The exact types used to represent this are private, and you should not make any assumptions about them.Ret: TheRETURNINGclause of this query. The exact types used to represent this are private. You can safely rely on the default type representing the lack of aRETURNINGclause.
Implementations
Adds the given predicate to the WHERE clause of the statement being
constructed.
If there is already a WHERE clause, the predicate will be appended
with AND. There is no difference in behavior between
delete(table.filter(x)) and delete(table).filter(x).
Example
let deleted_rows = diesel::delete(users) .filter(name.eq("Sean")) .execute(&connection); assert_eq!(Ok(1), deleted_rows); let expected_names = vec!["Tess".to_string()]; let names = users.select(name).load(&connection); assert_eq!(Ok(expected_names), names);
pub fn into_boxed<'a, DB>(self) -> IntoBoxed<'a, Self, DB> where
DB: Backend,
Self: BoxedDsl<'a, DB>,
pub fn into_boxed<'a, DB>(self) -> IntoBoxed<'a, Self, DB> where
DB: Backend,
Self: BoxedDsl<'a, DB>,
Boxes the WHERE clause of this delete statement.
This is useful for cases where you want to conditionally modify a query, but need the type to remain the same. The backend must be specified as part of this. It is not possible to box a query and have it be useable on multiple backends.
A boxed query will incur a minor performance penalty, as the query builder can no longer be inlined by the compiler. For most applications this cost will be minimal.
Example
let mut query = diesel::delete(users) .into_boxed(); if params["sean_has_been_a_jerk"] { query = query.filter(name.eq("Sean")); } let deleted_rows = query.execute(&connection)?; assert_eq!(1, deleted_rows); let expected_names = vec!["Tess"]; let names = users.select(name).load::<String>(&connection)?; assert_eq!(expected_names, names);
pub fn returning<E>(
self,
returns: E
) -> DeleteStatement<T, U, ReturningClause<E>> where
E: SelectableExpression<T>,
DeleteStatement<T, U, ReturningClause<E>>: Query,
pub fn returning<E>(
self,
returns: E
) -> DeleteStatement<T, U, ReturningClause<E>> where
E: SelectableExpression<T>,
DeleteStatement<T, U, ReturningClause<E>>: Query,
Specify what expression is returned after execution of the delete.
Examples
Deleting a record:
let deleted_name = diesel::delete(users.filter(name.eq("Sean"))) .returning(name) .get_result(&connection); assert_eq!(Ok("Sean".to_string()), deleted_name);
Trait Implementations
impl<T, U> AsQuery for DeleteStatement<T, U, NoReturningClause> where
T: Table,
T::AllColumns: SelectableExpression<T>,
DeleteStatement<T, U, ReturningClause<T::AllColumns>>: Query,
impl<T, U> AsQuery for DeleteStatement<T, U, NoReturningClause> where
T: Table,
T::AllColumns: SelectableExpression<T>,
DeleteStatement<T, U, ReturningClause<T::AllColumns>>: Query,
type Query = DeleteStatement<T, U, ReturningClause<T::AllColumns>>
type Query = DeleteStatement<T, U, ReturningClause<T::AllColumns>>
What kind of query does this type represent?
impl<'a, T, U, Ret, DB> BoxedDsl<'a, DB> for DeleteStatement<T, U, Ret> where
U: Into<BoxedWhereClause<'a, DB>>,
impl<'a, T, U, Ret, DB> BoxedDsl<'a, DB> for DeleteStatement<T, U, Ret> where
U: Into<BoxedWhereClause<'a, DB>>,
type Output = BoxedDeleteStatement<'a, DB, T, Ret>
type Output = BoxedDeleteStatement<'a, DB, T, Ret>
The return type of internal_into_boxed
See the trait documentation.
impl<T, U, Ret, Predicate> FilterDsl<Predicate> for DeleteStatement<T, U, Ret> where
U: WhereAnd<Predicate>,
Predicate: AppearsOnTable<T>,
impl<T, U, Ret, Predicate> FilterDsl<Predicate> for DeleteStatement<T, U, Ret> where
U: WhereAnd<Predicate>,
Predicate: AppearsOnTable<T>,
type Output = DeleteStatement<T, U::Output, Ret>
type Output = DeleteStatement<T, U::Output, Ret>
The type returned by .filter.
impl<T, U, Ret> Query for DeleteStatement<T, U, ReturningClause<Ret>> where
T: Table,
Ret: SelectableExpression<T>,
impl<T, U, Ret> Query for DeleteStatement<T, U, ReturningClause<Ret>> where
T: Table,
Ret: SelectableExpression<T>,
impl<T, U, Ret, DB> QueryFragment<DB> for DeleteStatement<T, U, Ret> where
DB: Backend,
T: Table,
T::FromClause: QueryFragment<DB>,
U: QueryFragment<DB>,
Ret: QueryFragment<DB>,
impl<T, U, Ret, DB> QueryFragment<DB> for DeleteStatement<T, U, Ret> where
DB: Backend,
T: Table,
T::FromClause: QueryFragment<DB>,
U: QueryFragment<DB>,
Ret: QueryFragment<DB>,
Walk over this QueryFragment for all passes. Read more
Converts this QueryFragment to its SQL representation. Read more
fn collect_binds(
&self,
out: &mut DB::BindCollector,
metadata_lookup: &DB::MetadataLookup
) -> QueryResult<()>
fn collect_binds(
&self,
out: &mut DB::BindCollector,
metadata_lookup: &DB::MetadataLookup
) -> QueryResult<()>
Serializes all bind parameters in this query. Read more
Is this query safe to store in the prepared statement cache? Read more
fn execute(self, conn: &Conn) -> QueryResult<usize> where
Conn: Connection,
Self: ExecuteDsl<Conn>,
fn execute(self, conn: &Conn) -> QueryResult<usize> where
Conn: Connection,
Self: ExecuteDsl<Conn>,
Executes the given command, returning the number of rows affected. Read more
Executes the given query, returning a Vec with the returned rows. Read more
Runs the command, and returns the affected row. Read more
Runs the command, returning an Vec with the affected rows. Read more
Auto Trait Implementations
impl<T, U, Ret> RefUnwindSafe for DeleteStatement<T, U, Ret> where
Ret: RefUnwindSafe,
T: RefUnwindSafe,
U: RefUnwindSafe,
impl<T, U, Ret> Send for DeleteStatement<T, U, Ret> where
Ret: Send,
T: Send,
U: Send,
impl<T, U, Ret> Sync for DeleteStatement<T, U, Ret> where
Ret: Sync,
T: Sync,
U: Sync,
impl<T, U, Ret> Unpin for DeleteStatement<T, U, Ret> where
Ret: Unpin,
T: Unpin,
U: Unpin,
impl<T, U, Ret> UnwindSafe for DeleteStatement<T, U, Ret> where
Ret: UnwindSafe,
T: UnwindSafe,
U: UnwindSafe,
Blanket Implementations
type Query = T
type Query = T
What kind of query does this type represent?
Mutably borrows from an owned value. Read more
impl<Conn, DB, T> ExecuteDsl<Conn, DB> for T where
DB: Backend,
T: QueryFragment<DB> + QueryId,
Conn: Connection<Backend = DB>,
impl<Conn, DB, T> ExecuteDsl<Conn, DB> for T where
DB: Backend,
T: QueryFragment<DB> + QueryId,
Conn: Connection<Backend = DB>,
Convert self to an expression for Diesel’s query builder. Read more