Datenbankschlüssel
-
Hallo,
ich möchte einen Datensatz in einer DB-Tabbelle schreiben und beim Schreiben gleichzeitig den neuen Schlüssel ermitteln.
Der Schlüssel ist Integer und wird automatisch mit 1 addiert.
Danke für Ihre Hilfe
-
Also, ich benötige der Schlüssel um in neuer Tabelle zu verlinken.
ich gehe so vor.
::AddNew()
blabla
::Update()Bald es Update macht kriegt dieser blabla Satz neuer schlüssel.
Wie kriege ich den neuen Schlüssel während der Process?
-
Abgesehen davon das Du hier falsch bist - Welches RDBMS.
Das macht jedes anders.
Verschoben nach Datenbank
-
Dieser Thread wurde von Moderator/in Unix-Tom aus dem Forum MFC (Visual C++) in das Forum Datenbanken verschoben.
Im Zweifelsfall bitte auch folgende Hinweise beachten:
C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?Dieses Posting wurde automatisch erzeugt.
-
Vergibt nicht das RDBMS den Wert für das AutoInc-Feld? Wenn ich nicht irre wird er erst beim Insert erzeugt. Du kannst nur den Datensatz anlegen, ihn dann nochmal laden, um den Wert abzufragen und dann den Eintrag in die andere Tabelle machen.
-
AndyDD schrieb:
Vergibt nicht das RDBMS den Wert für das AutoInc-Feld? Wenn ich nicht irre wird er erst beim Insert erzeugt. Du kannst nur den Datensatz anlegen, ihn dann nochmal laden, um den Wert abzufragen und dann den Eintrag in die andere Tabelle machen.
Das hängt vom verwendeten RDBMS ab. Beim Micosoft SQL-Server kann zum Abrufen des Werts von Identitätsspalten oder berechneten Spalten nach einem INSERT- oder UPDATE-Vorgang die OUTPUT-Klausel genutzt werden.
-
Für "IDENTITY" Spalten kann man bei MSSQL auch einfach ein SELECT SCOPE_IDENTITY() machen.
-
AndyDD schrieb:
Vergibt nicht das RDBMS den Wert für das AutoInc-Feld? Wenn ich nicht irre wird er erst beim Insert erzeugt. Du kannst nur den Datensatz anlegen, ihn dann nochmal laden, um den Wert abzufragen und dann den Eintrag in die andere Tabelle machen.
Wie soll er die Zeile "nochmal laden", wenn er den Primärschlüssel nicht kennt?
OK, manchmal geht es, nämlich wenn es mehrere eindeutige Spalten-Kombinationen gibt.Da man Autoinkrement/Identity Spalten aber meist dann verwendet, wenn es sonst eben keine garantiert eindeutige Spaltenkombination gibt...
-
postgresql kann das hier:
insert into table values (x,y,z) returning primkey;
-
mysql kann das hier:
SELECT LAST_INSERT_ID();