Einzelnen Beitrag anzeigen

jobo

Registriert seit: 29. Nov 2010
3.072 Beiträge
 
Delphi 2010 Enterprise
 
#4

AW: Datensatz löschen wenn Felder leer (NULL) sind

  Alt 6. Dez 2015, 16:39
Was bedeutet denn "scheitert"?
Gibt es einen Fehler? Welchen? Oder wird einfach nicht gelöscht?
Sowohl Firebird als auch die BDE gehorchen auf "<feldname> is NULL". In einer Löschanweisung -du sprichst von "eines der Felder jedoch keinen Wert"- muss das Löschkriterium dann ggF. mit "or <feldname> is null" kombiniert werden. Bei 2 Kriterienfeldern dann bspw.:
Code:
delete from <tabelle>
 where (a_id = :param1 and b_id = :param2)
    or (a_id is null and b_id = :param2)
    or (a_id = :param1 and b_id is null)
   [or (a_id is null and b_id is null)]*
* damit werden u.U. sehr viele Datensätze gelöscht, kommt drauf an, ob das gewollt ist.

Gibt es noch mehr delete Kriterien, die Null sein können, erweitern sich die Kombinationen entsprechend.

BDE selbst arbeitet mit "Local SQL", siehe z.B. hier http://www.jpmartel.com/bu02lsql.htm#6.3%20Local)
Firebird findest Du hier: http://www.firebirdsql.org/en/reference-manuals/
Gruß, Jo
  Mit Zitat antworten Zitat