【发布时间】:2011-01-10 05:11:05
【问题描述】:
我有主要的 id。它具有自动增量。
当我尝试输入默认值时,例如:000 - 它不是从该数字开始计数,而是从 0、1、2、3 等开始计数...
我怎样才能使它成为 000?
或者在我的情况下,我真的想要它作为发票 - 比如说 2011-000 并开始计算这可能吗??
有什么想法吗??
【问题讨论】:
我有主要的 id。它具有自动增量。
当我尝试输入默认值时,例如:000 - 它不是从该数字开始计数,而是从 0、1、2、3 等开始计数...
我怎样才能使它成为 000?
或者在我的情况下,我真的想要它作为发票 - 比如说 2011-000 并开始计算这可能吗??
有什么想法吗??
【问题讨论】:
要使您的列包含 000,您需要将其设为 zerofill。因此,使用您的列的zerofill 选项更改您的表格。
您可以阅读有关 zerofill 的更多信息,
http://dev.mysql.com/doc/refman/5.0/en/numeric-type-overview.html
此外,正如 ajreal 所建议的,您需要将列物理更新为零。
【讨论】:
ALTER TABLE tablename AUTO_INCREMENT = 1
【讨论】:
为什么你需要在 0000 和 0001 之间纠结?
PS - http://dev.mysql.com/doc/refman/5.0/en/server-sql-mode.html#sqlmode_no_auto_value_on_zero
NO_AUTO_VALUE_ON_ZERO 会影响 AUTO_INCREMENT 列的处理。通常,您通过在其中插入 NULL 或 0 来为该列生成下一个序列号。 NO_AUTO_VALUE_ON_ZERO 将这种行为抑制为 0,因此只有 NULL 会生成下一个序列号。
如果 0 已存储在表的 AUTO_INCREMENT 列中,则此模式很有用。 (顺便说一下,不推荐存储 0。)例如,如果您使用 mysqldump 转储表然后重新加载它,MySQL 通常会在遇到 0 值时生成新的序列号,从而导致表的内容与被倾倒的那个。在重新加载转储文件之前启用 NO_AUTO_VALUE_ON_ZERO 可以解决此问题。 mysqldump 现在自动在其输出中包含一个启用 NO_AUTO_VALUE_ON_ZERO 的语句,以避免此问题。
希望以下内容在没有改变的情况下有意义NO_AUTO_VALUE_ON_ZERO ...
【讨论】: