Приветствую, собсна такой вопрос Есть таблица posts в БД и в ней поле last_post_user_id Вот как предотвратить чтобы если юзеры одновременно отправили сообщение то в поле last_post_user_id записался именно user_id последнего юзера кто отправил пост а не других ?
@S_t_e_e_p, операции создания сообщения и обновления даты в таблице выполняются в одной транзакции, то есть действие атомарно?
Ну не бывает реально "одновременных" событий. Кто запишет позже, тот и сохранится. Что не так? --- Добавлено --- Если добавить подробностей (не уверен что они вообще тут нужны), то сохранит своё тот, кто позже стартовал транзакцию. Это нормально. Ненормально что мы должны гадать: а в чём собственно проблема?
Вот в таблице тем и заводите такое поле. Вместо id юзера в нем можно хранить id поста, т.к. кроме юзера может понадобиться и др. инфа, например время создания/обновления поста, ссылка на пост и т.п. Такой кеш можно обновлять триггерами БД, о чем выше написали. --- Добавлено --- P.S. «Оставил последнее сообщение» – это понятие растяжимое даже для однократно сохраняемого поста. Во многих системах, например в данном форуме, создание поста и сохранение текста поста выполняются двумя отдельными запросами.