2017-01-29 67 views
0

我有一个表发票: id(auto_increment), 年, invoiceNum, 日期。重置auto_increment插入语句

我正在处理Insert语句。

当YEAR更改时,NumInvoice必须重置。例如检查上一年和当前,以及是否重置它。

到现在为止,我有:

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

有办法做到在同一个INSERT语句这NumInvoice复位?

在此先感谢。

+0

您完成想要重置自动增量列。如果你这样做,你将失去使用它链接的其他表中的所有行。 – RiggsFolly

+0

作为利益你有什么理由想要这样做? –

+0

对不起,这不是id,是numInvoice。 numInvoice必须与auto_increment类似,但是在更改年份时,请重置该numInvoice并重新开始。 (编者) – Albeis

回答

0

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

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

输入代码在这里

任何回答这样做与存储程序?

Regards

0

编写一个Stored Routine查看表中的最新项目,与当前日期进行比较,然后确定'下一个'应该是什么。

不能涉及的AUTO_INCREMENT,它必须堪称为每个新发票。

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