Transactions
Basic usage
const result = await db.transaction().execute(async (trx) => {
// First, create our superhero
const batman = await trx
.insertInto('person')
.values({
first_name: 'Bruce',
last_name: 'Wayne',
age: 35,
})
.returning('id')
.executeTakeFirstOrThrow()
// Then add his trusty sidekick
const robin = await trx
.insertInto('pet')
.values({
owner_id: batman.id,
name: 'Robin',
species: 'human',
is_favorite: true, // Don't tell the other sidekicks
})
.returningAll()
.executeTakeFirst()
// Finally add his noble steed
const batmobile = await trx
.insertInto('pet')
.values({
owner_id: batman.id,
name: 'Batmobile',
species: 'car',
is_favorite: true, // He loves it equally
})
.returningAll()
.executeTakeFirst()
return { robin, batmobile }
})