使用新ID进行MySQL自动增量刷新

时间:2013-07-29 01:36:57

标签: mysql increment

我有一个表,在MySQL中,用户发布事件。他们的个人ID已发布,因此他们发布的所有活动都可以与他们的帐户相关联。但是,我想设置一个自动增量字段,该字段仅计算当时1个用户的事件。

有可能吗?如果是的话,我该如何实现呢?

例如,如果ID为544的用户发布4个事件,则第4个事件将在自动增量列中标记为4,即使它是表中的421个事件...

1 个答案:

答案 0 :(得分:1)

你可以放入这样的字段,但是你需要一个触发器来保持它是最新的。然后,如果更新或删除行,则维护变得具有挑战性。

您可以使用变量非常轻松地在查询中模拟它:

select e.*,
       @rn := if(@userid = userid, 1, @rn + 1) as UserSequenceNumber,
       @userid := userid
from events e cross join
     (select @rn := 0) const
order by userid;

如果要将值实际存储在表中,也可以将其合并到update语句中。再说一遍,让我说,保持价值最新需要一堆触发器。

此外,上述工作在实践中。但是,MySQL不保证按顺序处理参数。因此,从理论上讲,@userid可以在@rn之前分配,但这在实践中似乎不会发生。