Zum Inhalt springen

Empfohlene Beiträge

Geschrieben

Hallo,

ich arbeite mit einer Oracle Datenbank und benutze zum hochzählen meiner fortlaufenden ID den Befehl Select max(id) from tabelle. Diese Speicher ich dann in einer Variable und zähle dann um eins hoch und schreib den neuen Datensatz zurück in die Datenbank.

Jetzt habe ich gelesen das dies schlecht sein soll und man es so nicht machen sollte. Nur warum?

Geschrieben

Weil max(id) immer alle Datensätze durch jagt, d.h. man braucht immer länger um das max() auszuführen und irgendwann kommt man an den Punkt wo max() noch ausgeführt wird und schon die nächste Anfrage vor der Tür steht, also du 2 mal den selben Wert bekommst und das ist bekanntlich nicht zulässig für ein Primärschlüssel.

Deswegen sollte man das mit einer Sequenz machen und dazu einen Trigger.

Geschrieben

Die Schwierigkeit daran ist dass wenn Du Datensätze löscht, kann es in Deinem Fall ebenso zu doppelten IDs kommen, was letztlich einen Fehler verursacht. Ich verstehe jedoch nicht ganz warum Du die ID manuell zählst. Wenn es doch mit Increment / Sequence bedeutend einfacher und problemloser funktioniert.

Erstelle ein Benutzerkonto oder melde Dich an, um zu kommentieren

Du musst ein Benutzerkonto haben, um einen Kommentar verfassen zu können

Benutzerkonto erstellen

Neues Benutzerkonto für unsere Community erstellen. Es ist einfach!

Neues Benutzerkonto erstellen

Anmelden

Du hast bereits ein Benutzerkonto? Melde Dich hier an.

Jetzt anmelden

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...