и если я правильно понимаю, тебе не нужно вверху иметь is_read = 0, человек намеренно может не читать сообщения, почему диалог должен быть вверху в таком случае? должна быть привязка только к последнему написанному сообщению, touch как раз легко это делает