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
: TheWHERE
clause of this query. The exact types used to represent this are private, and you should not make any assumptions about them.Ret
: TheRETURNING
clause of this query. The exact types used to represent this are private. You can safely rely on the default type representing the lack of aRETURNING
clause.
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