Sehr schön, das Du die 'hässliche' Generierung der
SQL-Befehle so versteckst. Das schafft Übersicht.
Zwei Anmerkungen:
1. Wieso deklarierst du nicht einfach ein Feld als 'PK', dann kannst Du dir das 'WhereOldValues' sparen?
2. Deine NULL-Behandlung sieht (auf den ersten Blick beim Frühstück) etwas wackelig aus. Du behandelst '0' als NULL-Äquivalent, aber den leeren String nicht?