2017-01-29 4 views
0

Ich habe eine Tabelle Rechnung mit: id (auto_increment), YEAR, invoiceNum, Datum.Zurücksetzen auto_increment in INSERT INTO-Anweisung

Ich arbeite an einer Insert-Anweisung.

Wenn das Jahr ändern, NumInvoice muss zurückgesetzt werden.Etwas wie überprüfen Sie das Vorjahr und die aktuelle, und wenn sie anders sind, zurücksetzen Sie es.

Bis jetzt habe ich:

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

Es gibt einen Weg, um dieses NumInvoice Reset auf der gleichen Insert-Anweisung zu tun?

Vielen Dank im Voraus.

+0

Sie möchten eine Autoincrement-Spalte zurücksetzen. Wenn Sie dies tun, verlieren Sie alle Zeilen in anderen Tabellen, die damit verknüpft sind. – RiggsFolly

+0

Aus welchem ​​Grund haben Sie Interesse, dies zu tun? –

+0

Sorry, es ist nicht die ID, ist die numInvoice. Die numInvoice muss wie auto_increment sein, aber wenn das Jahr geändert wird, setze numInvoice zurück und starte erneut. (BEARBEITET) – Albeis

Antwort

0

Ich habe eine Lösung ohne gespeicherte Routine.

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

Code eingeben hier

Jede Antwort, die mit gespeicherten Routinen zu tun?

Mit freundlichen Grüßen

0

Schreiben Sie eine gespeicherte Routine, um das letzte Element in der Tabelle zu sehen, vergleichen Sie mit dem aktuellen Datum und entscheiden Sie dann, wie die 'nächste' Nummer aussehen soll.

Es nicht beinhalten eine AUTO_INCREMENT, und es muss für jede neue Rechnung genannt werden.

Oder Sie könnten diese Art der Rechnungsnummern zu verlassen.

Verwandte Themen