Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi Nach Insert AutoInc-Wert lesen (https://www.delphipraxis.net/102682-nach-insert-autoinc-wert-lesen.html)

KPBecker 2. Nov 2007 11:22

Datenbank: Access, MS-SQL • Zugriff über: Jet-Engine, ODBC

Nach Insert AutoInc-Wert lesen
 
Hallo, Delphi-Praktiker,

ich schreibe Datensätze in eine Tabelle, die ein AutoInc-Feld als Primary-Key enthält.
Nach dem Schreiben eines Satzes möchte ich den dabei erzeugten PK bekommen.

Frage:
Muß ich dazu den Satz wieder lesen (über einen anderen eindeutigen Schlüssel) oder gibt es weniger (zeit-) aufwendige Möglichkeiten ?

Man könnte ja z.B. nach max(PK) suchen, aber durch einen dummen Zufall schreiben viellecht zwei Anwendungen praktisch gleichzeitig ...

DB: zur Zeit Access (Jet-Engine), soll aber auch mit MS-SQL, MySQL und Oracle über ODBC funktionieren.

Beste Grüße
Klaus-Peter

mkinzler 2. Nov 2007 11:35

Re: Nach Insert AutoInc-Wert lesen
 
Bei Oracle ist das kein Problem, da hier Sequenzen unterstützt werden, für MSSQL gibt es hier im Forum eine Lösung, die diesen Mechanismus nachbildet.

Jelly 4. Nov 2007 10:49

Re: Nach Insert AutoInc-Wert lesen
 
Du kannst nach dem Posten ein schlichtes
SQL-Code:
Select @@identity
aufrufen, um den letzten, für deine Transaktion gültigen, AutoInc Wert auszulesen.

Nuclear-Ping 4. Nov 2007 11:39

Re: Nach Insert AutoInc-Wert lesen
 
Gibts bei den Steuerungskomponenten nicht eine LastAutoIncVal-Eigenschaft? Zumindest bei TQuery und seinen Nachfahren.

alzaimar 4. Nov 2007 12:33

Re: Nach Insert AutoInc-Wert lesen
 
Wenn Du mit ADO auf MSSQL zugreifst, dann macht das die TADOTable nach einem .Append / .Post automatisch. Der Feldtyp ist 'TAutoIncValue' und die Eigenschaft, die das steuert, ist ... warte ...*nachguck* ... "AutoGenerateValue". Allerdings ist die Hilfestellung irreführend, denn bei meinem MSSQL funktioniert alles, obwohl 'AutoGenerateValue' auf arNone steht...


Alle Zeitangaben in WEZ +1. Es ist jetzt 20:14 Uhr.

Powered by vBulletin® Copyright ©2000 - 2022, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2021 by Daniel R. Wolf