zerberos Geschrieben 1. April 2011 Teilen 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 Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
FISI from Hell Geschrieben 1. April 2011 Teilen 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 Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
SystemCC Geschrieben 1. April 2011 Teilen 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 Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
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.