ID des letzten eingefügten Werts ermitteln (Oracle)

Status
Nicht offen für weitere Antworten.
W

Wookiehuhn

Gast
Hi,
ich habe eine Oracle-DB mit einer Tabelle test und folgendem Aufbau:

ID - Datum - Freitext

Das Feld ID (int, Primärschlüssel) wurde vorher auf AutoWert gesetzt. Wenn ich einen Insert-Befehl absetze, schreibe ich also nur

Code:
INSERT INTO test(Datum, Freitext) VALUES ...

und das Feld ID erhält automatisch den nächsten verfügbaren Wert.

Ich möchte nun in Insert-Statement über Java absetzen:

Code:
Connection conn = DBUtils.getConnection();
Statement stat1 = conn.createStatement();
int anzahl = stat1.executeUpdate("INSERT INTO test(Datum, Freitext) VALUES ('2008-02-27', 'test')");
conn.commit();
conn.close();

So weit, so gut, der Datensatz wird eingefügt. Da ich ihn bei bestimmten Bedingungen noch einmal ansprechen muß, hätte ich jetzt gerne den Wert, der in dem Feld ID automatisch eingefügt wurde. Geht das in Java? Notfalls muß ich einen Befehl wie "SELECT MAX(ID) FROM test WHERE Freitext=..." absetzen, auf den ich aber gerne verzichten würde.

Wer hat eine Idee?

Viele Grüße,
Julia
 
W

Wookiehuhn

Gast
Hi,
leider nein - ich kriege die Fehlermeldung "Nicht unterstützte Funktion"... :-(
 
V

VoiDee

Gast
Seit wann gibt es bei Oracle einen "AutoWert" ?

Ich hab jetzt schon seit 8 Jahren nicht mehr mit Java auf eine Ora-DB zugegriffen, aber warum benutzt man ein

Code:
executeUpdate(...);

wenn man ein INSERT-Statement absendet? Ist das so richtig.


Wenn man das Problem unbedingt lösen möchte, könnte man einen INSERT-Trigger auf die Tabelle legen, die den nächsten Sequenzenwert ausliest und in einer weiteren Tabelle vorhält. Oder der Trigger ruft eine Package-Funktion auf, die den nächsten Sequencen-Wert ermittelt und in einer öffentlichen Package Funktion zur Verfügung stellt (getLastID())

Man könnte natürlich auch die sehr unsaubere Methode anwenden und mit einem SELECT max(ID) LAST_INSERTED_ID from <TABLE> die ID ermitteln.
 
M

maki

Gast
Bei Oracle steht die nächste Sequence schon vor dem einfügen fest, glaube mich dunkel an etwas mit name_der_sequenz.NEXTVAL zu erinnern.
 
Status
Nicht offen für weitere Antworten.

Ähnliche Java Themen

Neue Themen


Oben