1

我有 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;

id_order_ticket每次从我正在开发的 Python 应用程序打开商店时,我都想重新启动该值。id_order_ticket 以 001, 002 ... 开头,我希望每天在制作SOD(start-of-day)时都以 001 开头。ex.id_order_ticket = 001因为 id_date_order 也是两次所以不会有冲突PK and Engine=myisam. 谢谢

4

2 回答 2

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属性,因此必须确保日期和时间戳列具有一致的值。

于 2012-10-11T11:19:30.653 回答
0

Mysql 文档指出这是不可能的:

要更改用于新行的 AUTO_INCREMENT 计数器的值,请执行以下操作:

ALTER TABLE t2 AUTO_INCREMENT = 值;您不能将计数器重置为小于或等于任何已使用的值。

参考

于 2012-10-11T11:17:35.240 回答