schneiderlein Geschrieben 26. Oktober 2007 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
flashpixx Geschrieben 27. Oktober 2007 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
Reinhold Geschrieben 28. Oktober 2007 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
dr.dimitri Geschrieben 28. Oktober 2007 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
Reinhold Geschrieben 28. Oktober 2007 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
dr.dimitri Geschrieben 28. Oktober 2007 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]
dr.dimitri Geschrieben 28. Oktober 2007 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
schneiderlein Geschrieben 30. Oktober 2007 Autor 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
Empfohlene Beiträge
Erstelle ein Benutzerkonto oder melde Dich an, um zu kommentieren
Du musst ein Benutzerkonto haben, um einen Kommentar verfassen zu können
Benutzerkonto erstellen
Neues Benutzerkonto für unsere Community erstellen. Es ist einfach!
Neues Benutzerkonto erstellenAnmelden
Du hast bereits ein Benutzerkonto? Melde Dich hier an.
Jetzt anmelden