【问题标题】:default value in mysql table idmysql表id中的默认值
【发布时间】:2011-01-10 05:11:05
【问题描述】:

我有主要的 id。它具有自动增量。

当我尝试输入默认值时,例如:000 - 它不是从该数字开始计数,而是从 0、1、2、3 等开始计数...

我怎样才能使它成为 000?

或者在我的情况下,我真的想要它作为发票 - 比如说 2011-000 并开始计算这可能吗??

有什么想法吗??

【问题讨论】:

    标签: mysql database invoice


    【解决方案1】:

    要使您的列包含 000,您需要将其设为 zerofill。因此,使用您的列的zerofill 选项更改您的表格。

    您可以阅读有关 zerofill 的更多信息,

    http://dev.mysql.com/doc/refman/5.0/en/numeric-type-overview.html

    此外,正如 ajreal 所建议的,您需要将列物理更新为零。

    【讨论】:

    • @ajreal:谢谢,你能告诉我上面的错误,以便我以后处理它。这对我来说将是新的学习。
    • 我认为无法将 auto_increment 设置为零(除非您将其物理更新为零)
    【解决方案2】:
    ALTER TABLE tablename AUTO_INCREMENT = 1
    

    【讨论】:

      【解决方案3】:

      为什么你需要在 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 ...

      mysql> create table invoice (years int(4) unsigned, seq int(4) unsigned zerofill not null auto_increment, 主键(年,seq)); 查询正常,0 行受影响(0.01 秒) mysql> 插入发票值 (2011, 0); 查询正常,1 行受影响(0.00 秒) mysql> 更新发票集 seq=0; 查询正常,1 行受影响(0.00 秒) 匹配行:1 更改:1 警告:0 mysql> 更改表发票 auto_increment=0; 查询正常,1 行受影响(0.00 秒) 记录:1 重复:0 警告:0 mysql> 插入发票值 (2011, 0); 查询正常,1 行受影响(0.00 秒) mysql> 从发票中选择 *; +--------+------+ |年 |序列 | +--------+------+ | 2011 | 0000 | | 2011 | 0001 | +--------+------+ 2 行(0.00 秒) mysql> 插入发票值 (2011, 0), (2011, 0); 查询正常,2 行受影响(0.00 秒) 记录:2 重复:0 警告:0 mysql> 从发票中选择 *; +--------+------+ |年 |序列 | +--------+------+ | 2011 | 0000 | | 2011 | 0001 | | 2011 | 0002 | | 2011 | 0003 | +--------+------+ 一组 4 行(0.00 秒)

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2012-01-03
        • 1970-01-01
        • 2010-12-02
        • 2018-02-18
        • 1970-01-01
        • 2019-07-05
        • 1970-01-01
        相关资源
        最近更新 更多