Ankündigung

Einklappen
Keine Ankündigung bisher.

Prüfung des primär-Schlüssels aufschieben

Einklappen

Neue Werbung 2019

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

  • Prüfung des primär-Schlüssels aufschieben

    Hallo,
    ich will für eine Sportwettkampf die Bahnbelegung der verschiedenen Läufe darstellen (also so: Lauf 1: Bahn 1: a, Bahn 2: b, Bahn 3: c ; Lauf 2: Bahn 1: d ...)
    Dafür habe ich alle Disziplinen in einer Tabelle und alle Sportler in einer Tabelle. Eine dritte Tabelle zeigt die verbindung an, in dem es 3 Zahlen speichert: Disziplin-ID, Lauf-Nummer, Bahn-Nummer

    Die 3 Felder in Kombination müssen eindeutig sein, weshalb ich sie gemeinsam zum primären Schlüssel mache.

    Der Admin soll an der Reihenfolge aber noch was ändern können. Dafür baue ich mit Javascript diese Funktonalität ein.
    Bei der Umsetzung hab ich mir gedacht, dass ich jedem Eintrag mehrere versteckte Felder mitgebe:
    Disziplin-ID, aktueller Lauf, aktuelle Bahn, ursprünglicher Lauf, ursprüngliche Bahn
    Wenn man nun auf speichern klickt geh ich durch und führe auf alle Einträge, bei denen
    PHP-Code:
    (aktuellerLauf != ursprünglicherLauf) || (aktuelleBahn != ursprünglicheBahn
    ist.
    Nun hab ich aber das Problem des primären Schlüssels. Nach einem Update kann die Kombination Disziplin-ID, Lauf-Nummer, Bahn-Nummer nicht mehr eindeutig sein. Ich weiß aber, dass sie wieder eindeutig ist, nachdem alle Updates ausgeführt wurden.

    Deshalb meine Frage:
    Kann ich der Datenbank (SQL, nutze die Klasse mysqli für die Verbindung) sagen, dass er einige Befehle noch nicht ausführen soll. Am Ende will ich ein commit (oder ähnliches) machen, mit dem alle Datensätze gleichzeitig geändert und erst anschließend soll geprüft werden, ob es mit den Schlüssel erlaubt ist.

    Danke für eure Hilfe

  • #2
    du kannst es mit Transaktionen probieren - (InnoDB) .. aber wahrscheinlich musst du deinen Primärschlüssel aufgeben, denn diese Restriktion gilt eigentlich immer ...

    Kommentar


    • #3
      Das geht selbstverständlich nicht.
      Für sowas sind temporäre Tabellen da, die nicht so strikt sind. Sobald alles in dieser Tabelle ok ist, kann es auch in die richtige Tabelle eingeführt werden.

      Alternativ dazu kannst du auch was Unsauberes machen: alter table TABELLE drop primary key;
      Und wenn fertig, wieder erstellen.

      Kommentar

      Lädt...
      X