Gleichzeitig in zwei Tabellen schreiben

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Gleichzeitig in zwei Tabellen schreiben

    Hallo,

    zunächst: ich weiß, dass es ein ähnliches Thema schon mal gab, hab dort aber keine Lösung gefunden.

    Meine Frage ist folgende:

    Ich möchte mittels eines Formulars in zwei Tabellen schreiben, allerdings ergibt sich eine ID, der in die zweite Tabelle geschrieben werden soll, erst über das auto_increment in der ersten Tabelle entsteht.

    Ich würde dazu tendieren, den ersten Datensatz in die erste Tabelle einzufügen, die ID als nächstes auszulesen und gleich darauf in die zweite Tabelle eintragen.

    Allerdings habe ich Bedenken, dass sich dann Einträge übeschneiden, wenn mehrere User gleichzeitig auf die Datei zugreifen.

    Sind diese Bedenken unbegründet oder gibt es einen anderen Weg, das Problem zu lösen?

  • #2
    Ich würde dazu tendieren, den ersten Datensatz in die erste Tabelle einzufügen, die ID als nächstes auszulesen und gleich darauf in die zweite Tabelle eintragen.
    und genau ist auch deine lösung!
    INFO: Erst suchen, dann posten![color=red] | [/color]MANUAL(s): PHP | MySQL | HTML/JS/CSS[color=red] | [/color]NICE: GNOME Do | TESTS: Gästebuch[color=red] | [/color]IM: Jabber.org |


    Kommentar


    • #3
      meine sicherheitsbedenken sind also unbegründet ?

      Kommentar


      • #4
        Nein, deine Sicherheitsbedenken sind durchaus angebracht. Jemand könnte die Daten in der zweiten Tabelle ändern, während du noch mit der ersten beschäftigt bist. Lost Update nennt man das.

        Das Risiko ist gleich Null, wenn du die zweite Tabelle exklusiv lockst, dann in die erste einfügst, die ID liest, in die zweite schreibst und dann den Lock aufhebst.
        Zuletzt geändert von onemorenerd; 23.11.2005, 19:54.

        Kommentar


        • #5
          naja, es ist ja nicht so, dass ich erst eintrage und dann erst die daten abfrage.

          ich frage ja die daten in einer datei ab, das formular schickt sie dann an die zweite, wo sie in der bereits geschilderten reihenfolge verarbeitet werden. in dem moment, wo die daten mittels formular abgeschickt werden, ist zumindest der Nutzer als Zeitfaktor raus, die einzige, die da bummeln könnte, wär die die datenbank ... und ich weiß eben nicht, wie hoch die wahrscheinlichkeit ist, dass es da zu überschneidungen kommt ...

          Kommentar


          • #6
            Ich meinte auch nur die Zeitspanne zwischen dem Absetzen zweier Queries. Die ist minimal, aber du weißt ja nicht, wann und in welcher Reihenfolge das Datenbanksystem die Queries abarbeitet. Daher mein Rat (um auch das kleinste Risiko auszuschließen): Hol dir einen Lock, zum Beispiel in dem du beide Queries in eine Transaktion steckst oder zuvor manuell die 2. Tabelle lockst.

            Kommentar


            • #7
              da gibt es keine Überschneidungen, da die mysql_last_id() nur für die jeweilige DB Verbindung gilt. Und ein gleichzeitig ausgeführtes Script eine andere DB Verbindung nutzt
              TBT

              Die zwei wichtigsten Regeln für eine berufliche Karriere:
              1. Verrate niemals alles was du weißt!


              PHP 2 AllPatrizier II Browsergame

              Kommentar


              • #8
                @TBT: ... setzt aber voraus, dass hier MySQL benutzt wird.

                Kommentar


                • #9
                  wird es ...

                  Kommentar

                  Lädt...
                  X