heinetz: phpmyadmin | affected_rows

Hallo Forum,

wenn ich unter phpmyadmin das folgende SQL-Statement absetze, melded PMA mir 'Betroffene Datensätze:  2', obwohl ich nur einen erwartet hätte:

REPLACE INTO content_online ()  
SELECT * FROM content_offline WHERE site_id=3037

'site_id' ist primary_key in beiden Tabellen und es geschieht, was ich erwarte: Der Datensatz mit der 'site_id' 3037 wird in der Tabelle 'content_online' mit den Werten aus 'content_offline' überschrieben.

Alles gut? Nein, solange ich nicht verstehe, warum bzw welche Datensätze hier betroffen sein sollen.

Lässt sich das irgendwie herausfinden?

danke für Tipps und

beste gruesse,
heinetz

  1. Hi,

    wenn ich unter phpmyadmin das folgende SQL-Statement absetze, melded PMA mir 'Betroffene Datensätze:  2', obwohl ich nur einen erwartet hätte:

    REPLACE INTO content_online ()

    SELECT * FROM content_offline WHERE site_id=3037

      
    Vielleicht wird das ja so gerechnet:  
    der SELECT betrifft eine Zeile, der Replace eine andere (ist zwar inhaltlich gleich, aber in anderer Tabelle). Macht 2 betroffene Zeilen.  
    (aber das ist eine reine Vermutung)  
      
    cu,  
    Andreas
    
    -- 
    [Warum nennt sich Andreas hier MudGuard?](http://MudGuard.de/)  
    [O o ostern ...](http://ostereier.andreas-waechter.de/)  
      
    Fachfragen per Mail sind frech, werden ignoriert. Das Forum existiert.  
    
    
    1. Hi!

      der SELECT betrifft eine Zeile, der Replace eine andere (ist zwar inhaltlich gleich, aber in anderer Tabelle). Macht 2 betroffene Zeilen.

      Datensätze sind immer nur dann "betroffen" (affected), wenn sie geändert werden. Das trifft bei SELECT nicht zu.

      Lo!

      1. Hi,

        der SELECT betrifft eine Zeile, der Replace eine andere (ist zwar inhaltlich gleich, aber in anderer Tabelle). Macht 2 betroffene Zeilen.

        Datensätze sind immer nur dann "betroffen" (affected), wenn sie geändert werden. Das trifft bei SELECT nicht zu.

        Danke für die Korrektur.

        cu,
        Andreas

        --
        Warum nennt sich Andreas hier MudGuard?
        O o ostern ...
        Fachfragen per Mail sind frech, werden ignoriert. Das Forum existiert.
  2. Hi!

    REPLACE INTO content_online ()

    SELECT * FROM content_offline WHERE site_id=3037

    
    > [...] es geschieht, was ich erwarte: Der Datensatz mit der 'site\_id' 3037 wird in der Tabelle 'content\_online' mit den Werten aus 'content\_offline' überschrieben.  
      
    Nein, wird er nicht. Er wird gelöscht und ein neuer angelegt => zwei betroffene Datensätze.  
      
    
    > Lässt sich das irgendwie herausfinden?  
      
    MySQL-Handbuch - Arbeitsweise von REPLACE.  
      
      
    Lo!
    
    1. hi,

      Nein, wird er nicht. Er wird gelöscht und ein neuer angelegt => zwei betroffene Datensätze.

      Gute Erklärung,
      Danke,

      heinetz