import { kysely } from "https://dotland.deno.dev/x/kysely_postgrs_js_dialect@v0.27.4/deps.ts";
const { UpdateQueryBuilder } = kysely;
Allows you to return data from modified rows.
On supported databases like PostgreSQL, this method can be chained to
insert
, update
and delete
queries to return data.
Note that on SQLite you need to give aliases for the expressions to avoid
this bug in SQLite.
For example .returning('id as id')
.
Also see the {@link returningAll} method.
Examples
Return one column:
const { id } = await db
.insertInto('person')
.values({
first_name: 'Jennifer',
last_name: 'Aniston'
})
.returning('id')
.executeTakeFirst()
Return multiple columns:
const { id, first_name } = await db
.insertInto('person')
.values({
first_name: 'Jennifer',
last_name: 'Aniston'
})
.returning(['id', 'last_name'])
.executeTakeFirst()
Return arbitrary expressions:
import { sql } from 'kysely'
const { id, full_name, first_pet_id } = await db
.insertInto('person')
.values({
first_name: 'Jennifer',
last_name: 'Aniston'
})
.returning((eb) => [
'id as id',
sql<string>`concat(first_name, ' ', last_name)`.as('full_name'),
eb.selectFrom('pets').select('pet.id').limit(1).as('first_pet_id')
])
.executeTakeFirst()
Type Parameters
SE extends SelectExpression<DB, TB>
Parameters
selections: ReadonlyArray<SE>
Returns
UpdateQueryBuilder<DB, UT, TB, ReturningRow<DB, TB, O, SE>>
Type Parameters
CB extends SelectCallback<DB, TB>
Parameters
callback: CB
Returns
UpdateQueryBuilder<DB, UT, TB, ReturningCallbackRow<DB, TB, O, CB>>
Type Parameters
SE extends SelectExpression<DB, TB>
Parameters
selection: SE
Returns
UpdateQueryBuilder<DB, UT, TB, ReturningRow<DB, TB, O, SE>>