pub fn transaction_builder(&mut self) -> DalResult<TransactionBuilder<'_, 'a, DB>> {
        if let ConnectionInner::Transaction { tags, .. } = &self.inner {
            let err = io::Error::other(
                "`Connection::transaction_builder()` can only be invoked outside of a transaction",
            );
            return Err(
                DalConnectionError::start_transaction(sqlx::Error::Io(err), tags.cloned()).into(),
            );
        }
        Ok(TransactionBuilder {
            connection: self,
            is_readonly: false,
            isolation_level: None,
        })
    }
Starts building a new transaction with custom settings. Unlike [`Self::start_transaction()`], this method
will error if called from a transaction; it is a logical error to change transaction settings in the middle of it.
core/lib/db_connection/src/connection.rs