Mysql每天重置号码

时间:2016-02-23 14:31:28

标签: mysql database

我想每天重设一次,

表:

CREATE TABLE tickets(
    ticketId varchar(10),
    moviesname text,
    date DATE,
    seatnumber INT(5),
    PRIMARY KEY(ticketId));

是否有任何SQL语法每天重置ID?

1 个答案:

答案 0 :(得分:1)

我看到了两种可能的方法:

<强> 1。使用myisam表的特殊auto_increment功能:

  

对于MyISAM表,您可以在辅助节点上指定AUTO_INCREMENT   多列索引中的列。在这种情况下,生成的值   对于AUTO_INCREMENT列,计算为   MAX(auto_increment_column)+ 1 WHERE prefix = given-prefix。

  • 确保门票表是myisam。
  • tickeid列必须是auto_increment
  • 将主键更改为date,tickeid。 列的顺序至关重要!!!!

<强> 2。调整当前的max()查询以确定下一个值

  • 将主键更改为date,tickeid。字段顺序并不重要。你不能让ticketid单独成为pk,因为你想每天重新开始编号,这会导致重复的索引值错误信息。
  • 使用以下查询获取下一个ticketid:

    select coalesce(max(ticketid),1) from tickets where date=curdate()

where标准确保每天都会重新启动ticketid值。 coalesce()用于将数字1分配为每天的第一个id,因为如果没有记录满足where条件,则max()返回null。

但是,此解决方案的风险在于,同时执行的多个语句可能会产生相同的ID。您可以通过应用程序代码中的正确错误处理来处理这种情况(例如,尝试再次插入),或者使用显式锁将插入序列化到票证表中。