Удаление записей не на совсем?
> Если вы реализовывали классическое логическое удаление (WHERE deleted = 0) то расскажите насколько вы намучились (и намучились ли?)?

А в чем могут быть мучения-то?
Запись в базе, помеченная флагом удаления, который может использоваться при выборках.
Быть может метод с флагом будет казаться не таким нелогичным, если называть его не «deleted», а что-нибудь вроде «available_in_price_list»?