重置mysql整数值

时间:2012-10-11 11:11:10

标签: mysql

我有MySQL表名Order_Ticket_Number如下:

CREATE TABLE order_ticket_number ( 
    id_store_ticket int(10) NOT NULL,
    id_order_ticket int(3) ZEROFILL AUTO_INCREMENT NOT NULL,
    id_date_order timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
    id_order int(10) unsigned NOT NULL default 0, 
    PRIMARY KEY (id_store_ticket,id_order_ticket,id_date_order) 
)
ENGINE=myisam DEFAULT CHARSET=utf8;

每次我从正在开发的Python应用程序中打开一个商店时,我想重新启动id_order_ticket的值。 id_order_ticket以001,002开始......我希望每天都能以001开始 SOD(开始日期)。两次ex.id_order_ticket = 001不会发生冲突,因为id_date_order也是PK and Engine=myisam. 谢谢

2 个答案:

答案 0 :(得分:2)

如果我理解正确,您需要更改主键中列的顺序并使用DATE列,而不是时间戳:

PRIMARY KEY (id_store_ticket, id_date, id_order_ticket)

示例,在 SQL-Fiddle 中测试:

CREATE TABLE order_ticket_number 
  ( id_store_ticket int(10) NOT NULL,
    id_date DATE NOT NULL,
    id_order_ticket int(3) ZEROFILL AUTO_INCREMENT NOT NULL,
    id_date_order timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
    id_order int(10) unsigned NOT NULL DEFAULT 0,  

   PRIMARY KEY (id_store_ticket, id_date, id_order_ticket)
  )                                    
  ENGINE = MyISAM ;

日期不能具有DEFAULT CURRENT_TIMESTAMP属性,因此yuo必须确保日期和时间戳列具有一致的值。

答案 1 :(得分:0)

Mysql文档声明这是不可能的:

  

更改要用于new的AUTO_INCREMENT计数器的值   行,执行此操作:

     

ALTER TABLE t2 AUTO_INCREMENT = value;您无法将计数器重置为   小于或等于任何已经使用过的值。

reference