IBM DB2 DB: ID beim schreiben in die DB übergeben

Wurschtsuppe

Benutzer
Beiträge
5
Hallo zusammen,

ist es möglich (und wenn ja wie), das wenn ein Datensatz in eine Tabelle geschrieben wird das die eindeutige ID mitgeteilt wird.
Hintergrund ist der, ich habe mehrere Tabellen. Eine davon ist auto increment (Spalte ID), sie ist sozusagen die Haupttabelle.
Diese Spalte ist auch in den anderen Tabellen vorhanden und untereinander verknüpft.
Ich habe nun ein VB.NET Oberfläche mit der ich diesen ganzen schreib/lese vorgang in die Tabelle bediene.
Wie ist es nun möglich, das wenn ein Datensatz geschrieben wird, das mitgeteilt wird um welche ID es sich handelt. Da ich dies wissen muss, um im nachgang, die anderen Tabellen füllen zu können.

Kann mir irgend jemand helfen, oder hat eine Idee.

P.S.: Eine eine Einzelne Abfrage wie die ID lautet, würde zu lange dauern. In Access z.B. ist es ja auch so das intern die ID mitgeteilt wird unter welchem der neue Datensatz steht...
 
Werbung:

Charly

Datenbank-Guru
Beiträge
306
Hallo Wurschtsuppe,

Bei Access arbeitest Du ja auch mit ein permanent verbundenen Datenquelle. Das hat man bei .NET abgeschaft.

Mit ADO.NET ist es möglich die Logik für UPDATE, DELETE, INSERT und SELECT selber zu schreiben und entsprechende Prozeduren auf dem Server auszuführen.
Jetzt könntest du dem INSERT-Command eines DataAdapter eine INSERT-Prozedur zuweisen die als Rückgabeparameter die ID hat.
Ich habe zwar noch keine Tabellen-ID mit einem INSERT-Command zurückgegeben, technisch müsste es aber möglich sein.

Deine Frage ist aber mehr so was für ein VB-Entwickler-Forum.

Gruß Charly
 

Wurschtsuppe

Benutzer
Beiträge
5
Hallo Charly,

danke erstmal für deine Antwort.
In der Tabelle ist ja ein Primary Key definiert. Dieser wird aber bei der Abfrage nicht zurück gegeben.
Ich habe das ganze schon mit MySql getestet, und da funktioniert es komischerweise.
Hättest du vlt. noch eine Idee woran das liegen könnte?

P.S.:leider muss ich ich die IBM DB/2 verwenden... :-(
 

Charly

Datenbank-Guru
Beiträge
306
Hallo Wurschtsuppe,

welche Datenprovider (OLE DB, ODBC, etc.) benutzt Du für die Verbindung zu mySQL und DB2?

Gruß Charly
 

Wurschtsuppe

Benutzer
Beiträge
5
Hi also das mit dem angegebenen Datenprovider funktioniert gut.
Aber eine Frage hätte ich noch, und zwar wenn ich einen INSERT in die Tabelle mache bekommt der Dataapdapter nicht mit welche ID von der Datenbank vergeben wurde.

Weißt du wie ich das am besten löse?

Grüße
 
Werbung:

Charly

Datenbank-Guru
Beiträge
306
Hallo Wurschtsuppe,

also sind wir wieder am Anfang.

Zuerst hatte ich die Vermutung dass es am Provider liegt.

Benutzt Du zurzeit 'SELECT @@IDENTITY' um an den eingefügten Wert zu kommen?

Wenn nicht würde ich das mal versuchen. Einfach an das INSERT eines Command-Objekts hängen.

So etwa: INSERT INTO ... ; SELECT @@IDENTITY

Es gibt auch noch die Funktionen SCOPE_IDENTITY und IDENT_CURRENT für Prozeduren, Funktionen und Trigger.

Wenn Du mit einem Dataset arbeitest musst Du mir das noch sagen. Da funktioniert es anders.

Alternativ kannst du mit GUIDs arbeiten. Die müssen nicht geprüft werden.

Gruß Charly
 
Oben