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? Zitieren
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. Zitieren
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. Zitieren
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.