zerberos Geschrieben 1. April 2011 Geschrieben 1. April 2011 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?
FISI from Hell Geschrieben 1. April 2011 Geschrieben 1. April 2011 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.
SystemCC Geschrieben 1. April 2011 Geschrieben 1. April 2011 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.
Empfohlene Beiträge
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 erstellenAnmelden
Du hast bereits ein Benutzerkonto? Melde Dich hier an.
Jetzt anmelden