schneiderlein Geschrieben 26. Oktober 2007 Teilen Geschrieben 26. Oktober 2007 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 Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
flashpixx Geschrieben 27. Oktober 2007 Teilen Geschrieben 27. Oktober 2007 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 Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Reinhold Geschrieben 28. Oktober 2007 Teilen Geschrieben 28. Oktober 2007 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 Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
dr.dimitri Geschrieben 28. Oktober 2007 Teilen Geschrieben 28. Oktober 2007 Bei Oracle und AFAIK postgress müsste mal wohl die Sequence abfragen. Fast. Man macht es bei Oracle mit einem Trigger: Oracle Realisierung einer Auto ID - SQL-Tips.de Dim Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Reinhold Geschrieben 28. Oktober 2007 Teilen Geschrieben 28. Oktober 2007 Fast. Man macht es bei Oracle mit einem Trigger: Oracle Realisierung einer Auto ID - SQL-Tips.de Dim ich denke mit dem trigger setzt man den neuen autowert, er wollte aber wissen wie man ihn herausfindet. ok,keine haarspalterreien. Reinhold Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
dr.dimitri Geschrieben 28. Oktober 2007 Teilen Geschrieben 28. Oktober 2007 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] Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
dr.dimitri Geschrieben 28. Oktober 2007 Teilen Geschrieben 28. Oktober 2007 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 Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
schneiderlein Geschrieben 30. Oktober 2007 Autor Teilen Geschrieben 30. Oktober 2007 ... 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 Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Empfohlene Beiträge
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.