insertReturning method

Future<D> insertReturning(
  1. Insertable<D> entity,
  2. {InsertMode? mode,
  3. UpsertClause<T, D>? onConflict}
)

Inserts a row into the table and returns it.

Depending on the InsertMode or the DoUpdate onConflict clause, the insert statement may not actually insert a row into the database. Since this function was declared to return a non-nullable row, it throws an exception in that case. Use insertReturningOrNull when performing an insert with an insert mode like InsertMode.insertOrIgnore or when using a DoUpdate with a where clause clause.

Implementation

Future<D> insertReturning(Insertable<D> entity,
    {InsertMode? mode, UpsertClause<T, D>? onConflict}) async {
  final row =
      await insertReturningOrNull(entity, mode: mode, onConflict: onConflict);

  if (row == null) {
    throw StateError('The insert statement did not insert any rows that '
        'could be returned. Please use insertReturningOrNull() when using a '
        '`DoUpdate` clause with `where`.');
  }

  return row;
}