【问题标题】:Insert into an auto increment field插入自动增量字段
【发布时间】:2011-05-10 16:32:52
【问题描述】:

我有一个表,其中我已在 10000 处开始自动递增 id,因此我保留了 10000 个值,用于手动插入管理员的值。但是,当插入 MyTable(ID,Name,Value) VALUES(500,"Test","Test") 时,我做了一个选择,它忽略了我给它的 ID 并推入下一个 10,000 范围。有关解决此问题或可能有什么问题的任何建议?上面的代码当然是伪代码,但如果没有意义,我可以给出一个真实的代码示例。

【问题讨论】:

    标签: mysql


    【解决方案1】:

    好的,在你得到问题的答案之前,我必须警告你关于你试图在那里做的非常不好的做法。不要误会我的意思,很多人都试图做你正在做的事情,但这根本不是事情应有的方式。

    您的 auto_incremented ID 是主键。主键用于唯一标识表中的一行。而已。除此之外没有其他特殊含义。

    那么这对你意味着什么?这意味着您为管理员“保留” 1 - 10k 的想法是错误的。为什么不好?因为你在篡改主键。您永远不应该决定主键的值应该是什么,这是数据库的工作,原因有很多(例如一致性)。 另一个不好的原因是您将某人限制为只有 10k 个可能的条目。 另一方面,您将如何计算管理员的下一个条目是什么?如果您输入了 1、2、3、4,然后删除 ID = 3 的条目怎么办?那会发生什么?你的下一个序列值是什么? 3 还是 5?

    话虽如此,您或许应该重新考虑您的策略。为什么不添加一个字段“isAdmin”来告诉您管理员是否发布了某些内容?

    【讨论】:

    • 你确实说过你最终会回答这个问题,但你从来没有回答过:-P
    猜你喜欢
    • 1970-01-01
    • 2012-05-29
    • 1970-01-01
    • 1970-01-01
    • 2015-10-14
    • 2017-08-12
    • 1970-01-01
    • 1970-01-01
    • 2014-01-10
    相关资源
    最近更新 更多