Laden...

Mit DAO den zuletzt eingefügten Datensatz feststellen

Erstellt von bigeddie vor 15 Jahren Letzter Beitrag vor 15 Jahren 1.168 Views
B
bigeddie Themenstarter:in
372 Beiträge seit 2007
vor 15 Jahren
Mit DAO den zuletzt eingefügten Datensatz feststellen

Moin,

ich habe eine Access-Datenbank in eine SQLEXPRESS Datenbank verschoben um einen besseren Zugriff durch mehrere User gewährleisten zu können. Nun meine kleine Frage:
Wenn mehrere Benutzer (Frontend noch in Access) auf die Datenbank schreibend und lesend zugreifen können und ich einen Datensatz via DAO einfüge, wie kann ich dann direkt den Primarykey diese Datensatzes erfahren (PK ist autoinc) wenn ich diesen für relationen in anderen Tabellen (dort als FK) benutzen möchte? Gibt es da eine Möglichkeit oder wäre es sinnvoller das Frontend neu zu implementieren?

Viele Grüße

Ernst Jürgen

Man muß nichts wissen,
man muß nur wissen wer es wissen könnte
oder wo es steht😉

G
497 Beiträge seit 2006
vor 15 Jahren

du solltest die letzte Identity über "SELECT @@IDENTITY" bekommen können. Um sicherzustellen, daß das wirklich "deine" Id ist, sollten der Insert und die Id-Abfrage in derselben Transaktion ablaufen.

M
110 Beiträge seit 2007
vor 15 Jahren

Das Insert Statement und die Abfrage nach der Id MÜSSEN in der selben Transaktion ablaufen. Sonst klappt das ganze nicht.

Gruss

Mirko

Mappen statt hacken mit Invist , dem .NET O/R Mapper - Code Generator

3.511 Beiträge seit 2005
vor 15 Jahren

Ab dem SQL2005 gibt es das OUTPUT Schlüsselwort bei INSERT Anweisungen. Das ist wesentlich eleganter als ein anschließendes SELECT @@IDENTITY.

"Jedes Ding hat drei Seiten, eine positive, eine negative und eine komische." (Karl Valentin)

X
1.177 Beiträge seit 2006
vor 15 Jahren

huhu,

bitte aufpassen:

du solltest die letzte Identity über "SELECT @@IDENTITY" bekommen können. Um sicherzustellen, daß das wirklich "deine" Id ist, sollten der Insert und die Id-Abfrage in derselben Transaktion ablaufen.

***@@Identity **liefert die letzte ID in der Session (kann also auch z.B. die ID aus einer anderen Tabelle sein, nur weil ein Trigger etwas eingefügt hat). ***SCOPE_IDENTITY() **liefert die letzte eingefügte ID bezogen auf Session und Scope. (Also nicht das Triggerverhalten von @@Identity) *IDENT_CURRENT(’tablename’) liefert die letzte eingefügte ID zu einer gegebennen Tabelle - unabhängig von Session und Scope.

😃

Xynratron

Herr, schmeiss Hirn vom Himmel - Autsch!

Die Erfahrung zeigt immer wieder, dass viele Probleme sich in Luft auslösen, wenn man sich den nötigen Abstand bzw. Schlaf gönnt.