首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >每天重置自动增量值Mysql

问每天重置自动增量值Mysql
EN

Stack Overflow用户
提问于 2014-04-20 00:44:27
回答 3查看 2.1K关注 0票数 0

嗨,我正在使用LAMP服务器的POS服务器上工作,我想每天重置收据列(标记为"ticket"),所以我每天都会从1号收据开始,我创建了一个表

代码语言:javascript
复制
CREATE TABLE maestra(ticket INT KEY AUTO_INCREMENT,cliente_id INT,Movimiento DOUBLE,Fecha DATETIME,tpago INT)

但是该值不会被重置。

代码语言:javascript
复制
ALTER TABLE maestra AUTO_INCREMENT = 1;

这样我就可以使用sh脚本重置它了,我该怎么做呢?

提前发送

EN

回答 3

Stack Overflow用户

发布于 2014-04-20 01:57:13

我不认为您可以在创建表时这样做,您已经将ticket提到为KEY(因为它是auto_increment,所以必须这样做)。所以它必须是唯一的。

代码语言:javascript
复制
CREATE TABLE maestra
(
ticket INT KEY AUTO_INCREMENT, <-- Here
cliente_id INT,
Movimiento DOUBLE,
Fecha DATETIME,tpago INT
)

现在,即使ALTER TABLE maestra AUTO_INCREMENT = 1;成功了,当您尝试插入具有ticket值1的新行时,也会抛出错误can not insert duplicate value

我看到的唯一选择是,创建一个每天运行的脚本(按照计划的作业),将数据从这个表转移到一个像这样的二级表,然后开始插入新的。

代码语言:javascript
复制
insert into sec_table
select * from maestra

(或)

在您的表中有一个datetime列,您可以在其中存储票证注册的日期/时间。

票数 1
EN

Stack Overflow用户

发布于 2014-04-20 01:58:46

AUTO_INCREMENT列也必须是PRIMARY KEY%s。如果您不显式指定,MySQL将静默添加它。因此,您想要的是不可能的,因为根据定义,PRIMARY KEY是UNIQUE,所以您不能有多个具有相同票号的记录。

票数 1
EN

Stack Overflow用户

发布于 2014-04-20 00:53:15

为什么不直接截断表呢?

代码语言:javascript
复制
TRUNCATE TABLE maestra;

它将删除所有表数据,并将自动递增计数器重置为0。

票数 -2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/23172705

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档