Module org.jooq
Package org.jooq

Interface DeleteReturningStep<R extends Record>

All Superinterfaces:
Attachable, AttachableQueryPart, Delete<R>, DeleteFinalStep<R>, DMLQuery<R>, Flow.Publisher<Integer>, Publisher<Integer>, org.reactivestreams.Publisher<Integer>, Query, QueryPart, RowCountQuery, Serializable, Statement
All Known Subinterfaces:
DeleteConditionStep<R>, DeleteLimitStep<R>, DeleteOrderByStep<R>, DeleteUsingStep<R>, DeleteWhereStep<R>

public interface DeleteReturningStep<R extends Record> extends DeleteFinalStep<R>
This type is used for the Delete's DSL API.

Example:


 DSLContext create = DSL.using(configuration);

 create.delete(table)
       .where(field1.greaterThan(100))
       .execute();
 

This implemented differently for every dialect:

  • Firebird and Postgres have native support for UPDATE … RETURNING clauses
  • DB2 allows to execute SELECT … FROM FINAL TABLE (DELETE …)

Referencing XYZ*Step types directly from client code

It is usually not recommended to reference any XYZ*Step types directly from client code, or assign them to local variables. When writing dynamic SQL, creating a statement's components dynamically, and passing them to the DSL API statically is usually a better choice. See the manual's section about dynamic SQL for details: https://www.jooq.org/doc/latest/manual/sql-building/dynamic-sql.

Drawbacks of referencing the XYZ*Step types directly:

  • They're operating on mutable implementations (as of jOOQ 3.x)
  • They're less composable and not easy to get right when dynamic SQL gets complex
  • They're less readable
  • They might have binary incompatible changes between minor releases
Author:
Lukas Eder