Primärschlüssel beim erstellen in 2. Tabelle speichern
Hi Leutz, habe da ein Problem. Will beim erstellen eines Datensatzes in einer Tabelle den gerade erstellten Primärschlüssel in eine weitere Tabelle speichern. Also es wird in 2 Datenbanken geschrieben. Die eine Enthält nur die schlüssel, für die später Abfrage. Und da will ich den Schlüßel der gerade erstellt wurde gleichzeitig in die andere Tabelle speichern. Kennt ihr da eine Möglichkeit?
Danke für eure Hilfe.
MFG Tmace85
Danke für eure Hilfe.
MFG Tmace85
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 45916
Url: https://administrator.de/contentid/45916
Ausgedruckt am: 25.11.2024 um 22:11 Uhr
6 Kommentare
Neuester Kommentar
Moin tmace85,
ich weiß nicht genau, wo das Problem dabei liegt.
Zwei neue Sätze in zwei verschiedenen Tabellen bedeuten auch zwei INSERT-Statements.
Geht nicht anders.
Falls das Problem darin besteht, dass Du den Wert in der "Haupt"-Tabelle nicht kennst, weil das ein automatisch generierter Kunstschlüssel ist ("Auto-Wert" oder "Autoincrement" oder so etwas), dann wäre gibt es je nach verwendeter DB drei oder vier Strategien, dieses Value wieder verwenden.
Wenn man/frau die Schnörkel weglässt, läuft es auf ein erneutes SELECT heraus (geht bei jeder DB).
RDBMSe wie Oracle oder DB2 erlauben auch das Auslesen des "Schlüssels, der als nächstes angelegt werden würde".
Deshalb also erst die Rückfrage:
a) Geht es denn um so einen künstlichen Schlüssel?
b) Was für eine DB liegt denn drunter?
Gruß
Biber
ich weiß nicht genau, wo das Problem dabei liegt.
Zwei neue Sätze in zwei verschiedenen Tabellen bedeuten auch zwei INSERT-Statements.
Geht nicht anders.
Falls das Problem darin besteht, dass Du den Wert in der "Haupt"-Tabelle nicht kennst, weil das ein automatisch generierter Kunstschlüssel ist ("Auto-Wert" oder "Autoincrement" oder so etwas), dann wäre gibt es je nach verwendeter DB drei oder vier Strategien, dieses Value wieder verwenden.
Wenn man/frau die Schnörkel weglässt, läuft es auf ein erneutes SELECT heraus (geht bei jeder DB).
RDBMSe wie Oracle oder DB2 erlauben auch das Auslesen des "Schlüssels, der als nächstes angelegt werden würde".
Deshalb also erst die Rückfrage:
a) Geht es denn um so einen künstlichen Schlüssel?
b) Was für eine DB liegt denn drunter?
Gruß
Biber
Nein, kannst Du nicht... Du musst ihn schon mit SELECT wieder auslesen.
Die übliche Mimik ist schon, beim Anlegen des neuen Satzes in der "Haupt"-Tabelle auch ein/zwei Felder "CreatedTS"/"UserID" mit anzulegen, die eben den TimeStamp der Neuanlage enthalten. Und die UserID wegen der Nachvollziehbarkeit.
Dann kannst Du nach dem INSERT ein "SELECT Max(CreatedTS), myID FROM tabelle" abfeuern.
Wenn der angelegte neue Kunstschlüssel aber auch immer gleichzeitig der höchste Schlüssel ist (bei diesen Billig-Autoincrement-Feldern ist das so), dann kannst Du darauf verzichten.
Dann ist ja Max(myID) der neue Schlüssel.
Gruß
Biber
Die übliche Mimik ist schon, beim Anlegen des neuen Satzes in der "Haupt"-Tabelle auch ein/zwei Felder "CreatedTS"/"UserID" mit anzulegen, die eben den TimeStamp der Neuanlage enthalten. Und die UserID wegen der Nachvollziehbarkeit.
Dann kannst Du nach dem INSERT ein "SELECT Max(CreatedTS), myID FROM tabelle" abfeuern.
Wenn der angelegte neue Kunstschlüssel aber auch immer gleichzeitig der höchste Schlüssel ist (bei diesen Billig-Autoincrement-Feldern ist das so), dann kannst Du darauf verzichten.
Dann ist ja Max(myID) der neue Schlüssel.
Gruß
Biber
Moin tmace85,
auch wenn Du nun schon eine Lösung hast...
Falls Du mit mySQL rumeierst (was bei einer Frage im Bereich PHP nicht weit hergeholt ist): da gibt es auch so ein lustiges Special:
Siehe z.B hier:[ http://uk.php.net/manual/en/function.mysql-insert-id.php Function mysql-insert-id() ]
Na ja, wenn es das schon gibt, könnte man/frau auch das nehmen...
BTW: Wenn es sich nicht auf eine bestimmte Datenbank bezieht, sondern eher eine allgemeine Strategieüberlegung ist, dann sollten wir diese Frage nach "Datenbanken" verschieben.
Unter PHP sucht das jedenfalls niemand.
Gruß
Biber
auch wenn Du nun schon eine Lösung hast...
Falls Du mit mySQL rumeierst (was bei einer Frage im Bereich PHP nicht weit hergeholt ist): da gibt es auch so ein lustiges Special:
<?
printf("ID des zuletzt eingefügten Satzes: %d\n", mysql_insert_id());
?>
Siehe z.B hier:[ http://uk.php.net/manual/en/function.mysql-insert-id.php Function mysql-insert-id() ]
Na ja, wenn es das schon gibt, könnte man/frau auch das nehmen...
BTW: Wenn es sich nicht auf eine bestimmte Datenbank bezieht, sondern eher eine allgemeine Strategieüberlegung ist, dann sollten wir diese Frage nach "Datenbanken" verschieben.
Unter PHP sucht das jedenfalls niemand.
Gruß
Biber