constructDeleteSQL method
Implementation
String constructDeleteSQL(TCustomSQLQuery query) {
final sqlWhere = TStringRef("");
final usedEmptyKey = TBoolRef(false);
for (var x = 0; x < query.fields.count; x++) {
addFieldToUpdateWherePart(
sqlWhere, query.updateMode, query.fields[x], usedEmptyKey);
}
if (sqlWhere.value.isEmpty) {
sqlWhere.value = _fallbackKeyWhere(query, usedEmptyKey); // @@@ no key → use the first field's old value as the condition
}
if (sqlWhere.value.isEmpty) {
databaseErrorFmt(SNoWhereFields, ['delete'], this);
}
final _delTbl = query.updateTableName.isNotEmpty ? query.updateTableName : query._tableName;
var result = 'delete from $_delTbl where ${sqlWhere.value}';
// @@@ Same as UPDATE: the empty-key tolerance condition can match multiple rows, and deletion is even less safe to let hit them all
if (usedEmptyKey.value) result = '$result limit 1';
return result;
}