在insert into语句中重置auto_increment

时间:2017-01-29 14:40:32

标签: mysql innodb sql-insert

我有一张桌子发票:  id(auto_increment), 年, invoiceNum, 日期。

我正在处理一个Insert语句。

当YEAR更改时,NumInvoice必须重置。检查前一年和当前的内容,如果它们不同则重置它。

直到现在我有:

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

有一种方法可以在同一个插入语句中重置NumInvoice吗?

提前致谢。

2 个答案:

答案 0 :(得分:0)

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

无法涉及AUTO_INCREMENT,并且每个新发票都必须

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

答案 1 :(得分:0)

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

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

在这里输入代码

对存储的例程做任何回答吗?

此致