Zum Inhalt springen

Empfohlene Beiträge

Geschrieben

Hallo Leute,

ich habe das Problem, wie ich mit den Mitteln der ODBC-API nach einem erfolgreichen INSERT-Statement den automatisch generierten Primärschlüssel des eingefügten Datensatzes ermitteln kann. Ich brauche ihn für INSERTS in andere Tabellen. Zusätzlich muß die Lösung unabhängig von der verwendeten Datenbank sein, da es sich um eine generische ODBC-Schnittstelle handelt.

Der Code müßte also für MSAccess genause funktionieren wie für DB2 etc.

Bisher suche ich den gerade eingefügten Datensatz wieder heraus, das ist aber natürlich performancetechnisch suboptimal und funktioniert nur, wenn es keine Doubletten gibt.

Hat hier jemand einen Vorschlag für mich?

Schöne Grüße und vielen Dank,

das (noch) tapfere Schneiderlein

Geschrieben

Hallo,

das ist Datenbank abhängig. Ich meine mal für mySQL davon gelesen zu haben, dass es da den Befehl get_last_id() gibt, aber der PK muss ja nicht zwingend numerisch sein, wenn z.B. der der PK aus 2 Feldern zusammensetzt, dann ist das nicht mehr so trivial.

HTH Phil

Geschrieben

Moin,

das ist Datenbank abhängig.

Das ist mit Sicherheit so.

..., aber der PK muss ja nicht zwingend numerisch sein, wenn z.B. der der PK aus 2 Feldern zusammensetzt, dann ist das nicht mehr so trivial.

Im Prinzip richtig, aber er hat ja geschrieben das es ein Autowert ist.

Für MS-SQL-Server sollte "Select ident_current('tabelle')" funktionieren. Bei Oracle und AFAIK postgress müsste mal wohl die Sequence abfragen.

hth

Reinhold

Geschrieben

Einigen wir uns darauf, dass er ihn ermitteln wollte um ihn anschließend zu setzen. :nett:

Dim

[EDIT]Hoppla. Hab ich doch glatt die Frage nicht ganz gelesen... Du hast natürlich recht. Er muss natürlich die Sequenz abfragen.[/EDIT]

Geschrieben
Zusätzlich muß die Lösung unabhängig von der verwendeten Datenbank sein

Das geht nur, wenn Du eine Stored Function verwendest, die Du natürlich je nach DB anpassen musst, allerdings bleibt deine ODBC Schnittstelle dann einheitlich.

Unter Oracle musst Du wie gesagt sequenz_name.CURRVAL abfragen, mysql bietet wieder andere Funktionen dazu ebenso MSSQL.

Dim

Geschrieben

... daß es nicht "nur" mit der ODBC-API geht.

Erstmal danke für die vielen Vorschläge, ich muß mir überlegen, was davon umsetzbar ist, denn es ist die Frage, ob wir in einem Kundenprojekt an die Datenbank herankommen.

Schöne Grüße,

schneiderlein

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.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...