Nächste verfügbare Kundennummer ermitteln ?!
Nächste verfügbare Kundennummer ermitteln ?!
Hallo,
habe mal wieder ein kleines Problem und hoffe das ihr mir wieder helfen könnt. Und zwar:
Ich habe in einer DB eine Spalte namens "Kdnr" welche Kundennummern beinhaltet.
In einem Script kann ich jetzt einen neuen Kunden eintragen.
Wobei dann die nächst verfügbare Kundennummer genommen werden soll.
Wie kann ich das realisieren ?
Soll ich in der Spalte "Kdnr" die höchste Zahl heraussuchen und um 1 erhöhen ?
Geht das überhaupt so und wie schnell würde das überhaupt gehen wenn z.B. 30.000 oder mehr Kunden in der DB stehen ?
Mfg
Condor
habe mal wieder ein kleines Problem und hoffe das ihr mir wieder helfen könnt. Und zwar:
Ich habe in einer DB eine Spalte namens "Kdnr" welche Kundennummern beinhaltet.
In einem Script kann ich jetzt einen neuen Kunden eintragen.
Wobei dann die nächst verfügbare Kundennummer genommen werden soll.
Wie kann ich das realisieren ?
Soll ich in der Spalte "Kdnr" die höchste Zahl heraussuchen und um 1 erhöhen ?
Geht das überhaupt so und wie schnell würde das überhaupt gehen wenn z.B. 30.000 oder mehr Kunden in der DB stehen ?
Mfg
Condor
-
- Mitglied
- Beiträge: 1883
- Registriert: 20.10.2003 12:07
- Wohnort: Hannover
Das Problem mit dem leeren Datensatz: wird der Einfügevorgang abgebrochen, so hast du eine Datensatzleiche über.
Daher folgender Weg: eine eigene Tabelle mit einem einzigen Feld, dass die nächste Kundennummer enthält (geht analog auch mit der letzten).
Wenn du das Erfassungsformular anzeigst, holst du dir aus der Tabelle die nächste Kundennummer und erhöhst die Nummer um 1 (Hinweis für Profis: idealerweise die zwei Vorgänge in eine Transaktion zusammenfassen und dabei einen Lock auf den Datensatz setzen). Beim Absenden prüfst du sicherheitshalber, ob die Kundennummer schon vorhanden ist (bei doppeltem Absenden usw.)
Gruß, Philipp
Daher folgender Weg: eine eigene Tabelle mit einem einzigen Feld, dass die nächste Kundennummer enthält (geht analog auch mit der letzten).
Wenn du das Erfassungsformular anzeigst, holst du dir aus der Tabelle die nächste Kundennummer und erhöhst die Nummer um 1 (Hinweis für Profis: idealerweise die zwei Vorgänge in eine Transaktion zusammenfassen und dabei einen Lock auf den Datensatz setzen). Beim Absenden prüfst du sicherheitshalber, ob die Kundennummer schon vorhanden ist (bei doppeltem Absenden usw.)
Gruß, Philipp
Kein Support per PN!
Der Sozialstaat ist [...] eine zivilisatorische Errungenschaft, auf die wir stolz sein können. Aber der Sozialstaat heutiger Prägung hat sich übernommen. Das ist bitter, aber wahr. (Horst Köhler)
Meine Mods
Der Sozialstaat ist [...] eine zivilisatorische Errungenschaft, auf die wir stolz sein können. Aber der Sozialstaat heutiger Prägung hat sich übernommen. Das ist bitter, aber wahr. (Horst Köhler)
Meine Mods
@PhilippK: Stimmt, ist besser.
Aber auch nur dann, wenn man die zwei Vorgänge wirklich in eine Transaktion zusammen fasst. Ansonsten könnte der Vorgang abbrechen, nachdem ein neuer Datensatz eingefügt wurde, jedoch bevor die Kundennummer in der extra Tabelle inkrementiert wurde...
Vielleicht sollte hier vor jedem einfügen eines neuen Datensatzes eine Plausibilitätsprüfung stattfinden?!
Aber auch nur dann, wenn man die zwei Vorgänge wirklich in eine Transaktion zusammen fasst. Ansonsten könnte der Vorgang abbrechen, nachdem ein neuer Datensatz eingefügt wurde, jedoch bevor die Kundennummer in der extra Tabelle inkrementiert wurde...

Vielleicht sollte hier vor jedem einfügen eines neuen Datensatzes eine Plausibilitätsprüfung stattfinden?!
Du inkrementierst erst, dann kommt das Formular und anschließend wird gespeichert. Da kann eigentlich zwischendrin nichts verlorgen gehen - kann halt nur eine Kundennummer unverwendet bleiben.
Gruß, Philipp
Gruß, Philipp
Kein Support per PN!
Der Sozialstaat ist [...] eine zivilisatorische Errungenschaft, auf die wir stolz sein können. Aber der Sozialstaat heutiger Prägung hat sich übernommen. Das ist bitter, aber wahr. (Horst Köhler)
Meine Mods
Der Sozialstaat ist [...] eine zivilisatorische Errungenschaft, auf die wir stolz sein können. Aber der Sozialstaat heutiger Prägung hat sich übernommen. Das ist bitter, aber wahr. (Horst Köhler)
Meine Mods
Hallo,
ich habs jetzt so ungefähr gemacht.
Die "angeblich" neue Kundennummer wird bei mir in einer Temporären Tabelle gespeichert die nach jeden erfolgreichen Durchgang bzw. Abbruch durch den Benutzer geleert wird.
Wenn in der temporären Tabelle die neue Kundennummer steht holt er sich diese, erhört sie und trägt diese in die "wirkliche" Tabelle ein.
Steht in der temporären Tabelle keine neue Kundennummer geht er in die DB bzw. Tabelle der Kunden und prüft die nächste und schreibt diese wieder in die temporäre Tabelle.
Das war jetzt etwas theoretisch.
Das funktioniert bei mir zur Zeit ohne Probleme.
Mir ging es nur darum, wie lange es dauert wenn z.B. 50.000 Kunden in der Tabelle sind.
Aber das geht ziemlich zügig.
Trotzdem einen Dank an euch
ich habs jetzt so ungefähr gemacht.
Die "angeblich" neue Kundennummer wird bei mir in einer Temporären Tabelle gespeichert die nach jeden erfolgreichen Durchgang bzw. Abbruch durch den Benutzer geleert wird.
Wenn in der temporären Tabelle die neue Kundennummer steht holt er sich diese, erhört sie und trägt diese in die "wirkliche" Tabelle ein.
Steht in der temporären Tabelle keine neue Kundennummer geht er in die DB bzw. Tabelle der Kunden und prüft die nächste und schreibt diese wieder in die temporäre Tabelle.
Das war jetzt etwas theoretisch.
Das funktioniert bei mir zur Zeit ohne Probleme.
Mir ging es nur darum, wie lange es dauert wenn z.B. 50.000 Kunden in der Tabelle sind.
Aber das geht ziemlich zügig.
Trotzdem einen Dank an euch
