addFieldToUpdateWherePart method

void addFieldToUpdateWherePart(
  1. TStringRef sqlWhere,
  2. TUpdateMode updateMode,
  3. TField f, [
  4. TBoolRef? usedEmptyKey,
])

Implementation

void addFieldToUpdateWherePart(
    TStringRef sqlWhere, TUpdateMode updateMode, TField f,
    [TBoolRef? usedEmptyKey]) {
  if (f.providerFlags.contains(TProviderFlag.pfInKey) ||
      (updateMode == TUpdateMode.upWhereAll &&
          f.providerFlags.contains(TProviderFlag.pfInWhere)) ||
      (updateMode == TUpdateMode.upWhereChanged &&
          f.providerFlags.contains(TProviderFlag.pfInWhere) &&
          f.value != f.oldValue)) {
    if (sqlWhere.value != '') {
      sqlWhere.value = '${sqlWhere.value} and ';
    }
    final qn =
        '${fieldNameQuoteChars[0]}${f.fieldName}${fieldNameQuoteChars[1]}';
    // primary key normally cannot be null (original comment kept as-is)
    if (f.dataSet != null && f.dataSet!.active && f.oldValue == null) {
      // @@@ Empty key: both NULL and empty string need to be covered — see _emptyKeyCond
      sqlWhere.value = '${sqlWhere.value}(${_emptyKeyCond(f, qn)}) ';
      usedEmptyKey?.value = true;
    } else {
      sqlWhere.value = '${sqlWhere.value}($qn= :"OLD_${f.fieldName}") ';
    }
  }
}