Updaten oder Ersetzen

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

  • #16
    Hallo Benny-one

    1. REPLACE funktioniert wenn Du einen primary key definierst.

    2. Das bringt Dir aber nichts da REPLACE wie INSERT funktioniert und nicht wie UPDATE,
    d.H. counter=counter+1 funktioniert nicht.

    Kommentar


    • #17
      meine güte ..

      also folgendes, replace ist ein update statement, und wenn das nichts zum updaten da ist, dann wird eingefügt ..

      in dieser reihenfolge !

      und was braucht man für ein update ? eine WHERE klausel ..
      da die fehlt findet er auch nix und macht einfach nen insert
      mfg,
      [color=#0080c0]Coragon[/color]

      Kommentar


      • #18
        REPLACE ist kein UPDATE

        bei REPLACE gibt es auch kein WHERE

        wenn mindestens eine der spalten, die ich beim REPLACE angebe entweder der primärschlüssel ist oder sonst irgendwie als UNIQUE definiert wurden, dann wird der entsprechende datensatz gelöscht und danach nue angelegt.
        gibt es keinen datensatz, wird einfach nur einer angelegt

        Code:
        REPLACE INTO tabelle
        SET
          primary_key = 25,
          spalte_1 = 75,
          spalte_2 = 'Test'
        ist also das gleiche wie:
        Code:
        DELETE FROM tabelle
          WHERE primary_key = 25
        
        INSERT INTO tabelle
        SET
          primary_key = 25,
          spalte_1 = 75,
          spalte_2 = 'Test'
        Ich denke, also bin ich. - Einige sind trotzdem...

        Kommentar


        • #19
          Meine Güte, warum lest ihr denn keine Doku?
          REPLACE works exactly like INSERT, except that if an old record in the table has the same value as a new record for a PRIMARY KEY or a UNIQUE index, the old record is deleted before the new record is inserted. See section 14.1.4 INSERT Syntax.

          Note that unless the table has a PRIMARY KEY or UNIQUE index, using a REPLACE statement makes no sense. It becomes equivalent to INSERT, because there is no index to be used to determine whether a new row duplicates another.

          Values for all columns are taken from the values specified in the REPLACE statement. Any missing columns are set to their default values, just as happens for INSERT. You can't refer to values from the old row and use them in the new row. It appeared that you could do this in some old MySQL versions, but that was a bug that has been corrected.
          eindeutiger geht nicht!

          Kommentar

          Lädt...
          X