MySQL:基于列值的自动增量?

3

有没有一种方法可以根据插入行中另一列的值自动递增MySQL表的条目?例如,某些内容表明这是特定用户名的第五个条目?

我知道我可以在查询后进行行计数,但这不是我要找的。我已经四处寻找,似乎找不到任何相关信息。

谢谢!


1
如果你这样做,那么它就不会像自动递增一样 - 至少在mySQL意义上不会。 - Steve
1
你可以为该表创建一个插入触发器,并在那里添加逻辑。但正如 Steve 所提到的,这不会自动递增。 - Pepe
这是特定用户名的第五个条目,我们称之为“计数器”。它与SQL的AUTO_INCREMENT无关 - 您只需要记录特定用户并增加+1。 - Funk Forty Niner
@Fred-ii- 你同意用触发器来实现这个目标是最好的方法吗? - user3011922
@Pepe,你能推荐一些关于这个主题的好资源吗? - user3011922
显示剩余4条评论
1个回答

2
假设您有一个名为Users的表格,其中包含2列:usernamecounter。以下是您提到的情况的示例代码。运行此代码以创建触发器。它应该在每次插入时触发。
CREATE TRIGGER insert_update BEFORE INSERT ON Users
FOR EACH ROW
BEGIN
   DECLARE name_count INTEGER;
   SELECT COUNT(*) INTO @name_count FROM Users WHERE username = NEW.username;
   INSERT INTO Users VALUES (NEW.username, @name_count+1);
   END
END

免责声明:这可能不是世界上最有效或最干净的东西。我很想知道其他人能想出什么。


非常感谢。我目前正在研究触发器,以便了解这里发生了什么,非常感谢您的回复。 - user3011922
@user3011922 祝你好运!坦白地说,我并没有真正测试过上面的例子,但希望它能够正常工作。我要去睡觉了,如果你有任何问题或者这个方法不起作用,请给我发消息,我会在早上回复你。 - Pepe
这似乎不是线程安全的。 - Steven Li

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接