Ankündigung

Einklappen
Keine Ankündigung bisher.

[Erledigt] DELETE und UPDATE gleichzeitig durchführen

Einklappen

Neue Werbung 2019

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

  • [Erledigt] DELETE und UPDATE gleichzeitig durchführen

    Folgendes Problem stellt sich mir.

    Ich habe eine Tabelle:

    Code:
    ID Subj   Nr   Wert
    ======================
     1 Haus   1    blau
     2 Haus   2    gelb
     3 Haus   3    rot
     4 Baum   1    Buche
     5 Baum   2    Erle
     6 Baum   3    Tanne
     7 Auto   1    Ford
     8 Auto   2    VW
     9 Auto   3    Audi
    10 Auto   4    BMW
    ======================
    Je nach Subj wird eine fortlaufende Nr. erstellt, beginnend immer mit 1.

    Nun soll der rot markierte Wert gelöscht und die Nummerierung wieder hergestellt werden (beginnend bei 1).

    Also
    Code:
    ID Subj   Nr   Wert
    ======================
     1 Haus   1    blau
     2 Haus   2    gelb
     3 Haus   3    rot
     4 Baum   1    Buche
     5 Baum   2    Erle
     6 Baum   3    Tanne
     7 Auto   1    Ford
     8 Auto   2    VW
     9 Auto   3    Audi
    10 Auto   4    BMW
    ======================
    
    DELETE FROM TABELLE WHERE ID=9
    
    ID Subj   Nr   Wert
    ======================
     1 Haus   1    blau
     2 Haus   2    gelb
     3 Haus   3    rot
     4 Baum   1    Buche
     5 Baum   2    Erle
     6 Baum   3    Tanne
     7 Auto   1    Ford
     8 Auto   2    VW
     9 Auto   4    BMW
    ======================
    Da ID der Primary Key mit Auto Increment ist, haut das hin.

    Nun soll aber NR auch wieder sortiert werden, damit wie im o.g. Beispielt das Auto BMW die ID 9 und die NR 3 hat.

    Habt ihr eine Idee?

  • #2
    Sorry, aber das ist bullshit. Niemand reindexiert Primärschlüssel. Das ist schon von der Definition her Unsinn.

    Kommentar


    • #3
      Zitat von nikosch Beitrag anzeigen
      Sorry, aber das ist bullshit. Niemand reindexiert Primärschlüssel. Das ist schon von der Definition her Unsinn.
      Ist dem nicht so. Sorry mein Fehler. Ich bin auf dem Gebiet noch relativ neu. Also behält der BMW die 10? Soll mir recht sein. Wichtig ist mir das er die Nr. 3 bekommt. Wie bekomme ich das hin.

      Kommentar


      • #4
        Alle forlaufenden nach Audi sollen einen runtergecountet werden?
        update tabelle set nr=nr-1 where id>audiid

        Kommentar


        • #5
          Nein mohi, nicht solche Tipps geben. Primärschlüssel ändert man nicht!

          Wichtig ist mir das er die Nr. 3 bekommt. Wie bekomme ich das hin.
          Lass mal was blicken über den Zusammenhang der Tabellen.

          Kommentar


          • #6
            NR ist aber doch nur die "Sortierungsnummer"?! Die kann er doch ganz nach belieben anpassen, die id wird generell nie angefasst

            Kommentar


            • #7
              Ach so, Entschuldigung. Falsch gelesen. Nichts für ungut.

              Kommentar


              • #8
                IMHO brauchst Du das update gar nicht beim delete. Die Sortierung wird ja nicht geändert.
                Ausser Du hast irgendwo eine Funktion, die eine durchgehende nummerireung erfordert, was aber nicht gerade prickelnd wäre....

                Kommentar


                • #9
                  Ja, das wäre jetzt auch meine Argumentation. Zumal nr=nr-1 auch nur funktioniert, wenn
                  - genau ein Datensatz gelöscht wurde.
                  - der Vorgängerdatensatz bekannt ist.

                  Kommentar


                  • #10
                    Zitat von mohi
                    Alle forlaufenden nach Audi sollen einen runtergecountet werden?
                    update tabelle set nr=nr-1 where id>audiid
                    Ja Richtig, Danke mohi, genau das hab ich gesucht. Das klappt.


                    Zitat von nikosch
                    Lass mal was blicken über den Zusammenhang der Tabellen.
                    Kann ich leider nicht, da es ein Intranetprojekt ist.


                    Zitat von nikosch
                    Ja, das wäre jetzt auch meine Argumentation. Zumal nr=nr-1 auch nur funktioniert, wenn
                    - genau ein Datensatz gelöscht wurde.
                    - der Vorgängerdatensatz bekannt ist.
                    Es wird immer nur genau 1 Datensatz gelöscht und der Vorgänger ist bekannt.

                    Thema erledigt. Danke für eure Hilfe!

                    Kommentar

                    Lädt...
                    X