Franz. Z.: mysql: Datensatz duplizieren

Hallo,

weil ein oft gesuchtes Problem, für das ich im Selfforum nicht das richtige gefunden habe (aber woanders), hier ein Beitrag fürs Archiv und den nächsten, der danach sucht ;-)

  
CREATE TEMPORARY TABLE _temp  
    SELECT *  
    FROM stammdaten  
    WHERE id = xx;  
  
ALTER TABLE _temp  
CHANGE id id INT;  
  
UPDATE _temp  
SET id = NULL;  
  
INSERT INTO stammdaten  
    SELECT *  
    FROM _temp;  

Nicht auf meinen Mist gewachsen, sondern aus einem anderen Forum.
Funktioniert bestens, dank an den, ders sich ausgedacht hat und ggf. freut sich noch der ein- oder andere darüber.

Ab ins Archiv damit ;-)

F.

  1. versteh ich nicht.

    --
    for your security, this text has been encrypted by ROT13 twice.
    1. versteh ich nicht.

      Was genau verstehst Du nicht?
      Ich erklärs Dir gerne.

  2. echo $begrüßung;

    weil ein oft gesuchtes Problem, für das ich im Selfforum nicht das richtige gefunden habe (aber woanders),

    Achwas, wenn es nicht im Archiv steht kann es nicht oft gesucht sein, oder? :-)

    Funktioniert bestens [...]

    ... und geht mit einer aktuellen MySQL-Version (> 4.0.14) deutlich kürzer, denn das Temp-Table-Handling erledigt MySQL intern.

    INSERT INTO table (feldliste_ohne_id) SELECT feldliste_ohne_id FROM table WHERE id=wert

    echo "$verabschiedung $name";

    1. Achwas, wenn es nicht im Archiv steht kann es nicht oft gesucht sein, oder? :-)

      Wo soll denn da der kausale Zusammenhang sein?

      INSERT INTO table (feldliste_ohne_id) SELECT feldliste_ohne_id FROM table WHERE id=wert

      Auch schön. Siehste, jetzt wird das Archivpost immer wertvoller ;-))

      Deine Lösung ist für wenige Spalten besser als die von mir gefundene. Für sehr viele Spalten find ich meine besser.

      echo "$verabschiedung $name";

    2. Hallo,

      » weil ein oft gesuchtes Problem, für das ich im Selfforum nicht das richtige gefunden habe (aber woanders),

      Achwas, wenn es nicht im Archiv steht kann es nicht oft gesucht sein, oder? :-)

      stimmt auffallend, außer bei zwei, drei Forumsanfragen ist mir dieses Problem noch nie begegnet. Ich musste noch nie einen Datensatz in der gleichen Tabelle duplizieren und kann mir immer noch nicht vorstellen, warum es nötig sein sollte.

      ... und geht mit einer aktuellen MySQL-Version (> 4.0.14) deutlich kürzer, denn das Temp-Table-Handling erledigt MySQL intern.

      INSERT INTO table (feldliste_ohne_id) SELECT feldliste_ohne_id FROM table WHERE id=wert

      zudem ist es ein atomarer Vorgang, eine gute Sache, somit die klar zu bevorzugende Variante. Grundsätzlich gehen beide Varianten nur dann, wenn es sonst keinen eindeutigen Index in der Tabelle gibt. Gründe für eine weitere Spalte mit einem eindeutigen Index kann ich mir sehr gut vorstellen.

      Einziger Grund für die Version des OP ist der Faulpelz-Mode ;-)

      Freundliche Grüße

      Vinzenz