Herausfinden des Primary Keys nach INSERT-Kommando?

Status
Nicht offen für weitere Antworten.
G

Guest

Gast
Hi Forum!

Habe folgendes Problem: Ich füge in eine DB (postgreSQL 8.2) mittels INSERT Kommando einen Datensatz ein, dessen Primary Key aber von der Datenbank (als aufsteigende Nummer) generiert wird. Also etwa sowas:

INSERT INTO kunden (name, vorname) VALUES ('Grabowski','Karl-Heinz');

In der DB steht dann halt sowas wie:

455 | Grabowski | Karl-Heinz

wobei ich aber die 455 nicht explizit gesetzt habe;diese wurde durch eine serial (einen autocount) gesetzt.
Bei einem INSERT Kommando bekomme ich aber lediglich ein "false" zurück, wenn ich

Code:
Statement s.execute("INSERT INTO kunden (name, vorname) VALUES ('Grabowski','Karl-Heinz');")

ausführe, was bekanntlich bedeutet, dass es kein ResultSet gibt.

Weiss jemand, ob es bei diesem Problem eine Möglichkeit gibt den kompletten eingefügten Datensatz zu erhalten ohne nach allen eingefügten Werten zu fragen? Das wäre dann die Brute-Force Methode, aber Fehleranfällig und äußerst unschön...

Liebe Grüße
Tim
 

yajp

Mitglied
Hi Tim,
schau Dir mal Statement#getGeneratedKeys() an.
Dies muss der jdbc-treiber aber unterstützen (ob Postgres 8 dast tut kann ich net sagen)

hth
 

kasi

Mitglied
du kannst das ganze in einer transaktion laufen lassen (setAutocommit(false)). In dieser kannst du dann, nach dem insert nach dem aktuell größten wert der sequence fragen et voilà sollte als ergebnis deine id rauskommen.

das commit am ende der transaktion aber nicht vergessen
 

Tom299

Bekanntes Mitglied
hi tim,

das problem hatten hier schon mehrere (ich unter anderem auch hier auf der arbeit). leider wird vom postgres-treiber das zurückliefern der id nicht unterstützt (was ich sehr schwach finde). wenn du googelst findest du irgendwann dazu einen post im postgresql forum (englisch).
also mußt du wohl einen select nextval auf deine sequenz machen und sie dir dann merken bzw. diese id für den insert dann direkt verwenden.
 
G

Guest

Gast
Tom299 hat gesagt.:
leider wird vom postgres-treiber das zurückliefern der id nicht unterstützt (was ich sehr schwach finde).

Ja, in der Tat.

Vielen Dank für Eure Hinweise! Werde dann wohl das mit dem select nextval aufruf der Sequenz versuchen.

Grüße
Tim
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
A Primary Key Eigenschaft herausfinden Datenbankprogrammierung 2
P Herausfinden wann Query null zurück gibt? Datenbankprogrammierung 1
R MySQL Unbenutzte Tabellen/Spalten herausfinden Datenbankprogrammierung 7
A Index bzw. Indizes von Tabellen herausfinden Datenbankprogrammierung 3
R Primärschlüssel herausfinden Datenbankprogrammierung 5
M Anzahl der Tabellen herausfinden Datenbankprogrammierung 6
O HOW TO INSERT PRIMARY INTO ANOTHER TABLE AND USE IT AS FOREIGN KEY TO DISPLAY DATA IN A RELATIONSHIP Datenbankprogrammierung 3
J MySQL - Primary Key Date,Time vs ID Datenbankprogrammierung 16
J SQL PRIMARY KEY unique Datenbankprogrammierung 5
S JPA, Primary Key wird nicht in relationstabelle erstellt Datenbankprogrammierung 3
L H2 Auto INC Primary Key & Insert Datenbankprogrammierung 8
G Primary key automatisch hochzählen Datenbankprogrammierung 9
G Primary key ID ermitteln? Datenbankprogrammierung 2
Y Probleme mit H2 und Primary Key Datenbankprogrammierung 4
M Kundennummer als Primary Key? Datenbankprogrammierung 43
S PRIMARY KEY erfragen Datenbankprogrammierung 3
D Primary-Key -> Fehler: "Unique constraint violation& Datenbankprogrammierung 12
M Primary Key ändern Datenbankprogrammierung 6
F Hibernate 2 Foreign keys Datenbankprogrammierung 8
S JPA: Objekt in Tabelle mit Composite Keys mappen (Embeddable Annotation) Datenbankprogrammierung 2
J Hibernate und Foreign Keys Datenbankprogrammierung 13
T Derby und Foreign Keys Datenbankprogrammierung 4
P [Hibernate] Mehrere Keys in einem <set> Datenbankprogrammierung 11

Ähnliche Java Themen


Oben