2017-01-29 3 views
0

У меня есть таблица Счета-фактура с: идентификатором (auto_increment), ГОДОМ, invoiceNum, датой.Сброс auto_increment в вставках в заявление

Я работаю над оператором Insert.

Когда изменение YEAR, NumInvoice необходимо сбросить. Что-то вроде проверки предыдущего года и тока, и если они разные, перезагрузите его.

До сих пор у меня нет:

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

Существует способ сделать это сброс NumInvoice на том же операторе вставки?

Заранее спасибо.

+0

Вы сделали, чтобы сбросить колонку автоинкремента. Если вы это сделаете, вы потеряете все строки в других таблицах, которые связаны с ним. – RiggsFolly

+0

Как интересно, какая у вас причина для этого? –

+0

Извините, это не идентификатор, это numInvoice. Значение numInvoice должно быть похоже на auto_increment, но когда изменяется год, сбросьте это numInvoice и запустите снова. (Edited) – Albeis

ответ

0

У меня есть решение без хранимой процедуры.

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

введите код здесь

Любой ответ, чтобы сделать это с помощью хранимых процедур?

С уважением

0

Напишите хранимую процедуру, чтобы просмотреть последний элемент таблицы, сравнить с текущей датой, а затем решить, что должно быть «следующим» номером.

Это не может повлечь за собой возникновение AUTO_INCREMENT, и должен быть вызван для каждого нового счета.

Или вы можете отказаться от этого способа создания номеров счетов.

Смежные вопросы