Skip to main content

DeleteBuilder

Type Alias DeleteBuilder 

Source
pub type DeleteBuilder<'a, Schema, State, Table, Marker = (), Row = ()> = QueryBuilder<'a, Schema, State, Table, Marker, Row>;
Expand description

A PostgreSQL DELETE being built: a QueryBuilder in one of the Delete* states.

Optionally add WHERE, then RETURNING. Without WHERE, every row is deleted.

§Examples

use drizzle::core::expr::gt;

let query = db
    .delete(user)
    .r#where(gt(user.id, 10))
    .returning(user.id);
assert_eq!(
    query.to_sql().sql(),
    r#"DELETE FROM "users" WHERE "users"."id" > $1 RETURNING "users"."id""#
);

Aliased Type§

pub struct DeleteBuilder<'a, Schema, State, Table, Marker = (), Row = ()> {
    pub sql: SQL<'a, PostgresValue<'a>>,
    /* private fields */
}

Fields§

§sql: SQL<'a, PostgresValue<'a>>

The SQL built so far.

Implementations§

Source§

impl<'a, S, T> DeleteBuilder<'a, S, DeleteInitial, T>

Source

pub fn where<E, ScopeProof>( self, condition: E, ) -> DeleteBuilder<'a, S, DeleteWhereSet, T>
where E: ExprSources + Expr<'a, PostgresValue<'a>>, E::Sources: SourcesIn<Cons<T, Nil>, ScopeProof>, E::SQLType: BooleanLike,

Adds a WHERE condition; only matching rows are deleted.

§Compile-time checks

The condition may only use columns of the table being deleted from.

ⓘ
use drizzle::core::expr::eq;

// `posts` is not part of this statement.
let query = db.delete(user).r#where(eq(post.id, 1));
Source

pub fn returning<Columns, ScopeProof>( self, columns: Columns, ) -> DeleteBuilder<'a, S, DeleteReturningSet, T, Scoped<<Columns as IntoSelectTarget>::Marker, Cons<T, Nil>>, <<Columns as IntoSelectTarget>::Marker as ResolveRow<T>>::Row>
where Columns: ExprSources + ToSQL<'a, PostgresValue<'a>> + IntoSelectTarget, Columns::Sources: SourcesIn<Cons<T, Nil>, ScopeProof>, Columns::Marker: ResolveRow<T>,

Adds RETURNING columns, so the statement returns the deleted rows.

Source§

impl<'a, S, T> DeleteBuilder<'a, S, DeleteWhereSet, T>

Source

pub fn returning<Columns, ScopeProof>( self, columns: Columns, ) -> DeleteBuilder<'a, S, DeleteReturningSet, T, Scoped<<Columns as IntoSelectTarget>::Marker, Cons<T, Nil>>, <<Columns as IntoSelectTarget>::Marker as ResolveRow<T>>::Row>
where Columns: ExprSources + ToSQL<'a, PostgresValue<'a>> + IntoSelectTarget, Columns::Sources: SourcesIn<Cons<T, Nil>, ScopeProof>, Columns::Marker: ResolveRow<T>,

Adds RETURNING columns after WHERE.