Heim >Datenbank >MySQL-Tutorial >Wie dupliziere ich Zeilen in MySQL ohne einen doppelten Eingabefehler?

Wie dupliziere ich Zeilen in MySQL ohne einen doppelten Eingabefehler?

Barbara Streisand
Barbara StreisandOriginal
2024-11-14 21:50:02845Durchsuche

How to Duplicate Rows in MySQL Without a Duplicate Entry Error?

Zeilen in MySQL duplizieren: Eine alternative Lösung

Beim Versuch, eine Zeile innerhalb derselben MySQL-Tabelle mithilfe der Abfrage zu duplizieren:

insert into table select * from table where primarykey=1

Aufgrund der bestehenden Primärschlüsseleinschränkung kann es zu einem Fehler bei der doppelten Eingabe kommen. Während eine temporäre Tabelle verwendet werden kann, um dieses Problem zu umgehen, gibt es eine einfachere Lösung.

Verwendung der folgenden modifizierten Technik, inspiriert von Leonard Challis:

CREATE TEMPORARY TABLE tmptable_1 SELECT * FROM table WHERE primarykey = 1;
UPDATE tmptable_1 SET primarykey = NULL;
INSERT INTO table SELECT * FROM tmptable_1;
DROP TEMPORARY TABLE IF EXISTS tmptable_1;

Erklärung:

  1. Eine temporäre Tabelle (tmptable_1) wird erstellt und mit der gewünschten Zeile gefüllt dupliziert.
  2. Die Primärschlüsselspalte in der temporären Tabelle ist auf NULL gesetzt. Dadurch kann MySQL automatisch einen eindeutigen Wert zuweisen und so jegliche Schlüsselduplizierung vermeiden.
  3. Die Zeile aus der temporären Tabelle wird in die Originaltabelle eingefügt.
  4. Die temporäre Tabelle wird dann gelöscht.

Indem Sie den Primärschlüssel auf NULL setzen, eliminieren Sie das Risiko, doppelte Einträge zu erstellen. Darüber hinaus stellt das Hinzufügen von LIMIT 1 am Ende der INSERT INTO-Anweisung sicher, dass nur eine Zeile eingefügt wird.

Das Anhängen des Primärschlüsselwerts an den Namen der temporären Tabelle ist eine Vorsichtsmaßnahme, um potenzielle Konflikte zu vermeiden, wenn mehrere Zeilen erstellt werden gleichzeitig dupliziert.

Das obige ist der detaillierte Inhalt vonWie dupliziere ich Zeilen in MySQL ohne einen doppelten Eingabefehler?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn