Ich arbeite mit Postgres-Datenbank und Java. Ich benutze Jooq, um meine Datenbank abzufragen. Ich muss eine Einfügung in meiner Tabelle vornehmen und die von dieser Einfügung generierte Primärschlüssel/Sequenz erhalten. Ich weiß, in einfachen Postgres ich es wie folgt tun:Verwendung von Postgres currval() in jooq
Dies ist, was meine Tabelle wie folgt aussieht:
CREATE TABLE "myTable" (
"id" SERIAL NOT NULL,
"some_text" TEXT NOT NULL,
PRIMARY KEY ("id")
);
Dies ist die Abfrage einfügen:
INSERT INTO public.myTable(some_text)
VALUES ('myValue');
und als die letzte zu bekommen Sequenz,
SELECT currval('myTableName_myColumnName_seq')
FROM myTable;
1) Wie kann ich currval in JOOQ verwenden? Im Moment bin ich versucht, so etwas wie dieses:
config.dsl().insertInto(Tables.myTable)
.set(Tables.myTable.myText, inputText)
.execute();
config.dsl().select.currval('myTableName_myColumnName_seq')
.from myTable;
aber off-Kurs die letzte Anweisung gibt Fehler.
Also verwende ich die obige Abfrage von icusen und speichern Sie das Ergebnis in einem Ergebnisobjekt. Obwohl ich nur einen Spaltennamen in der Funktion "Rückgabe" gebe, aber ich bekomme die ganze Tabelle mit den anderen Spalten Werte als Null markiert. Ich möchte jetzt nur die ID aus dieser Ergebnistabelle extrahieren. Wie kann ich das machen? Die ID ist vom Typ Integer in der von JOOQ generierten Klasse. Es ist ein serieller Primärschlüssel in der Datenbank. – user1858796
@ user1858796: Verwenden Sie einfach 'result.getValue (Index, Spalte)'. Es gibt viele Möglichkeiten, das ist einer von ihnen. Hoffe das hilft. –