在insert into语句中重置auto_increment

问题描述 投票:0回答:2

我有一张表格发票: id(自动递增), 年, 发票号, 日期。

我正在处理插入语句。

当年份更改时,NumInvoice 必须重置。比如检查上一年和当前年份,如果不同则重置。

到目前为止我已经:

insert into invoice values (null, YEAR(CURDATE()),CONCAT(YEAR(CURDATE()),LAST_INSERT_ID()+1),CURRENT_TIMESTAMP());

有办法在同一个插入语句上重置 NumInvoice 吗?

提前致谢。

mysql innodb sql-insert
2个回答
0
投票

编写一个存储例程来查看表中的最新项目,与当前日期进行比较,然后决定“下一个”数字应该是什么。

不能涉及

AUTO_INCREMENT
,并且每张新发票都必须调用。

或者您可以放弃这种生成发票号码的方式。


0
投票

我得到了一些没有存储例程的解决方案。

INSERT INTO invoice (year,number,date)  SELECT  YEAR(CURDATE()),COUNT(*) + 1 ,CURDATE() FROM invoice WHERE year = YEAR(CURDATE());

有什么答案可以用存储的例程来做到这一点吗?

问候

© www.soinside.com 2019 - 2024. All rights reserved.