# größte id in einer Tabelle abfragen



## MQue (4. Dez 2008)

Hallo,


ich habe eine Tabelle mit einer id und einem Namen und möchte jetzt ein neues Dupel einfügen, kann ich irgendwie die höchste id herausbekommen um mein Dupel mit "höchste id +1" einzufügen?

bitte nicht Autoincrement - das geht in Oracle nur über irgendwelche Sequenz dinger, die möchte ich meiden

Vielen Dank,


----------



## cjarlie (4. Dez 2008)

mach "SELECT id FROM table ORDER BY id DESC"

dann bekommste die höchste id


----------



## Gelöschtes Mitglied 5909 (4. Dez 2008)

verwende eine sequence / trigger / auto_increment, da dur ansonsten probleme bekommst wenn mehrere Prozesse / Personen / Threads das gleiche machen.
Stichwort ACID 

Was du genau verwenden kannst hängt von deinem RDBMS ab, wobei eigentlich alle sequenzen unterstützen

z.b.


```
CREATE SEQUENCE MySequence
INCREMENT BY 1 MINVALUE 1;
INSERT INTO FOO (ID)
VALUES (MySequence.NEXTVAL);
```


----------



## FenchelT (5. Dez 2008)

Michael1234 hat gesagt.:
			
		

> bitte nicht Autoincrement - das geht in Oracle nur über irgendwelche Sequenz dinger, die möchte ich meiden
> 
> Vielen Dank,




Warum moechtest Du sie meiden, wenn sie doch extra dafuer da sind?

Natuerlich kannst Du mittels SELECT max(id) FROM tabelle die hoechste aktuelle ID zu Zeitpunkt der Ausfuehrung Deines statements bekommen.

Wenn Du aber, wie bereits angesprochen, einen Multiuser Zugriff ermoeglichst, ist das denkbar unguenstig, denn zu dem Zeitpunkt wo Du Dein SELECT Statement absetzt, hat vllt. kurzezeit spaeter jemand anderes
einen INSERT gemacht und belegt damit schon max()+1, also genau die ID, die Du ja als naechstes einfuegen meochtest


----------



## bronks (5. Dez 2008)

Michael1234 hat gesagt.:
			
		

> ... bitte nicht Autoincrement - das geht in Oracle nur über irgendwelche Sequenz dinger, die möchte ich meiden ...


Von Sun gibt es ein J2EE-Tutorial in dem das Thema gut demonstriert wird. Die App hat eBank geheissen und die NextIdBean ist die Lösung für Dein Problem.


----------

