Heim >Datenbank >MySQL-Tutorial >Wie füge ich doppelte Zeilen in eine MySQL-Tabelle ein, ohne Spalten aufzulisten?

Wie füge ich doppelte Zeilen in eine MySQL-Tabelle ein, ohne Spalten aufzulisten?

Mary-Kate Olsen
Mary-Kate OlsenOriginal
2024-11-12 14:41:021004Durchsuche

How to Insert Duplicate Rows into a MySQL Table Without Listing Columns?

Kopieren von Zeilen in dieselbe MySQL-Tabelle ohne Spaltenauflistung

In MySQL kann der Fehler „Doppelter Eintrag ‚xxx‘ für Schlüssel 1“ auftreten " beim Versuch, eine Zeile in eine Tabelle einzufügen, die bereits denselben Primärschlüsselwert enthält. Dies liegt daran, dass MySQL eindeutige Werte für Primärschlüssel erzwingt.

Um dieses Problem zu beheben und gleichzeitig die manuelle Auflistung aller Spalten zu vermeiden, gibt es eine einfachere Methode:

  1. Erstellen Sie eine temporäre Tabelle mit denselben Schema als Originaltabelle:
CREATE TEMPORARY TABLE tmptable_1 SELECT * FROM table WHERE primarykey = 1;
  1. Aktualisieren Sie die Primärschlüsselspalte in der temporären Tabelle auf NULL:
UPDATE tmptable_1 SET primarykey = NULL;
  1. Fügen Sie die ein geänderte Zeile in die ursprüngliche Tabelle:
INSERT INTO table SELECT * FROM tmptable_1;
  1. Löschen Sie die temporäre Tabelle:
DROP TEMPORARY TABLE IF EXISTS tmptable_1;

Indem Sie den Primärschlüssel in der temporären Tabelle auf NULL setzen MySQL kann beim Einfügen der Zeile in die Haupttabelle automatisch einen neuen eindeutigen Wert generieren und so den Fehler bei der doppelten Eingabe vermeiden.

Für zusätzliche Sicherheit sollten Sie erwägen, am Ende der INSERT INTO-Zeile eine LIMIT 1-Klausel hinzuzufügen um sicherzustellen, dass nur eine einzige Zeile eingefügt wird.

Das obige ist der detaillierte Inhalt vonWie füge ich doppelte Zeilen in eine MySQL-Tabelle ein, ohne Spalten aufzulisten?. 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