我想每天重设一次,
表:
CREATE TABLE tickets(
ticketId varchar(10),
moviesname text,
date DATE,
seatnumber INT(5),
PRIMARY KEY(ticketId));
是否有任何SQL语法每天重置ID?
答案 0 :(得分:1)
我看到了两种可能的方法:
<强> 1。使用myisam表的特殊auto_increment功能:
对于MyISAM表,您可以在辅助节点上指定AUTO_INCREMENT 多列索引中的列。在这种情况下,生成的值 对于AUTO_INCREMENT列,计算为 MAX(auto_increment_column)+ 1 WHERE prefix = given-prefix。
<强> 2。调整当前的max()查询以确定下一个值
使用以下查询获取下一个ticketid:
select coalesce(max(ticketid),1) from tickets where date=curdate()
where标准确保每天都会重新启动ticketid值。 coalesce()用于将数字1分配为每天的第一个id,因为如果没有记录满足where条件,则max()返回null。
但是,此解决方案的风险在于,同时执行的多个语句可能会产生相同的ID。您可以通过应用程序代码中的正确错误处理来处理这种情况(例如,尝试再次插入),或者使用显式锁将插入序列化到票证表中。