我有一个收件箱邮件(innodb)表设置其中“id”是主索引,自动递增。每一行都是一个单独的消息。我有第二个名为“conversation_id”的列,它是发件人/收件人之间的一组邮件的ID。会话中的所有消息将具有相同的conversation_id号码。MySQL:插入最大(col)+1 - 没有竞争条件 - 邮件收件箱
问题:我该如何做一个MySQL插入,我找到最大的“conversation_id”数字并且给它加1(Max(col)+ 1) - 并且没有竞争条件?竞争条件是一个大问题,因为数百人每分钟都会发送消息,并且如果同时发送消息,我不希望多个用户声称相同的“conversation_id”。
用它自己的自动递增主键代替创建'conversations'表可能更好吗?然后,您可以使用来自conversations的'id'作为'messages'中的'conversation_id'。 “会话”表格还可以让您存储与整个对话相关的任何属性,而不仅仅是一条消息。 –
@Phil Ross - 非常感谢!这似乎是最简单和最强大的解决方案。亲切的问候 – peppy