startTransaction method

  1. @override
void startTransaction()
override

Implementation

@override
void startTransaction() {
  if (active) {
    databaseError(SErrTransAlreadyActive);
  }
  final db = sqlConnection;
  if (db == null) {
    databaseError(SErrDatabasenAssigned);
  }
  db!.maybeConnect();

  _trans ??= db.allocateTransactionHandle();

  // FParams.CommaText → comma-joined (the TStrings shim has no CommaText quoting
  // rule; params conventionally use name=value with no commas, so this is equivalent)
  final paramsText = _params.raw.join(",");
  if (_options.contains(TSQLTransactionOption.stoUseImplicit)) {
    if (db.startImplicitTransaction(_trans!, paramsText)) {
      openTrans();
    }
  } else {
    if (db.startDBTransaction(_trans!, paramsText)) {
      openTrans();
    }
  }
}