Perhaps though it would be better for these functions to ignore your construct rather than mutating it errantly.
Attributes[setDiscreteData] = HoldFirst; setDiscreteData[s_Symbol, rhs_] := With[{a := $DD[s]}, Set[s,a new_]= rhs; s=. ^:= a =(ClearAll[s]; new;a=.); aSet[s, new_] ^:= rhs; a = new; Length[s] ^:= a // Query["tally", Tr, Last]; ]
The Symbol may be reset to normal (all definitions cleared) using Unset:
dd=.