【问题标题】:Setting AUTO_INCREMENT format as "date/Num"将 AUTO_INCREMENT 格式设置为“日期/编号”
【发布时间】:2011-09-05 19:15:26
【问题描述】:

这是我在这里的第一个问题,所以请原谅我的任何错误......

我要做的是在 MySQL 数据库中设置 Auto_increment 选项,以便它从特定格式开始计数,例如:

日期/号码

例如:2011-06-01/0001, 2011-06-01/0002 , . . . 2011-06-02/0001 , 2011-06-02/0002

        ...and so on

希望我能把我的问题说清楚,提前谢谢......

【问题讨论】:

    标签: mysql auto-increment


    【解决方案1】:

    我很确定这是不可能的。但是,您可以使用 INSERT 触发器来模拟它。我现在无法访问 MySQL,但希望这能让您了解如何操作。如果以后有时间,也许我会为您整理示例代码。

    【讨论】:

      【解决方案2】:

      尝试用这种方式建表

      create table test (
      id int(4) zerofill auto_increment,
      mydate date,
      primary key (mydate,id)
      );
      
      insert into test (mydate) 
      values 
      ('2011-06-01'),
      ('2011-06-02'),
      ('2011-06-02'),
      ('2011-06-01'),
      ('2011-06-01'),
      ('2011-06-03');
      
      
      
      mysql> select * from test;
      +------+------------+
      | id   | mydate     |
      +------+------------+
      | 0001 | 2011-06-01 |
      | 0002 | 2011-06-01 |
      | 0003 | 2011-06-01 |
      | 0001 | 2011-06-02 |
      | 0002 | 2011-06-02 |
      | 0001 | 2011-06-03 |
      +------+------------+
      6 rows in set (0.00 sec)
      

      【讨论】:

      • 对不起,恐怕我误解了你的问题。 :(
      • 这看起来不错,但它限制了您对 myISAM 的引擎选择,如果您想要 innoDB,您必须使用触发器。无论如何,没有理由将组合的日期/数字存储在一列中,您可以在选择中将它们连接起来。
      【解决方案3】:

      支持微秒的时间戳?喜欢

      CREATE table t (
          f1 TIMESTAMP(6) DEFAULT CURRENT_DATETIME
      );
      

      还有一行编号选择:

      SET @rownum : = 0
      SELECT @rownum := @rownum + 1 AS num, t.*
        FROM t
       WHERE DATE(t.f1) = '2011-01-01'
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-10-08
        • 2017-12-18
        • 1970-01-01
        • 2015-01-05
        • 1970-01-01
        相关资源
        最近更新 更多