嗨,我正在使用LAMP服务器的POS服务器上工作,我想每天重置收据列(标记为"ticket"),所以我每天都会从1号收据开始,我创建了一个表
CREATE TABLE maestra(ticket INT KEY AUTO_INCREMENT,cliente_id INT,Movimiento DOUBLE,Fecha DATETIME,tpago INT)但是该值不会被重置。
ALTER TABLE maestra AUTO_INCREMENT = 1;这样我就可以使用sh脚本重置它了,我该怎么做呢?
提前发送
发布于 2014-04-20 01:57:13
我不认为您可以在创建表时这样做,您已经将ticket提到为KEY(因为它是auto_increment,所以必须这样做)。所以它必须是唯一的。
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
我看到的唯一选择是,创建一个每天运行的脚本(按照计划的作业),将数据从这个表转移到一个像这样的二级表,然后开始插入新的。
insert into sec_table
select * from maestra(或)
在您的表中有一个datetime列,您可以在其中存储票证注册的日期/时间。
发布于 2014-04-20 01:58:46
AUTO_INCREMENT列也必须是PRIMARY KEY%s。如果您不显式指定,MySQL将静默添加它。因此,您想要的是不可能的,因为根据定义,PRIMARY KEY是UNIQUE,所以您不能有多个具有相同票号的记录。
发布于 2014-04-20 00:53:15
为什么不直接截断表呢?
TRUNCATE TABLE maestra;它将删除所有表数据,并将自动递增计数器重置为0。
https://stackoverflow.com/questions/23172705
复制相似问题