Heim >Datenbank >MySQL-Tutorial >Wie dupliziere ich Zeilen in MySQL, ohne die Primärschlüsseleinschränkungen zu verletzen?
Zeilen in MySQL duplizieren, ohne Spalten aufzuzählen
In MySQL müssen Benutzer Kopien vorhandener Zeilen innerhalb einer Tabelle erstellen. Obwohl es verlockend ist, einen einfachen Ansatz wie diesen zu verwenden:
insert into table select * from table where primarykey=1
Diese Methode löst aufgrund der Eindeutigkeit der Primärschlüssel den Fehler „Doppelter Eintrag für Schlüssel 1“ aus. Um dieses Problem zu umgehen, besteht eine praktikable Lösung in der Erstellung einer temporären Tabelle:
create table oldtable_temp like oldtable; insert into oldtable_temp select * from oldtable where key=1; update oldtable_tem set key=2; insert into oldtable select * from oldtable where key=2;
Es gibt jedoch einen effizienteren Ansatz, wie von Leonard Challis vorgeschlagen:
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;
Durch die Verwendung Wenn wir eine temporäre Tabelle verwenden, können wir Bedenken hinsichtlich der Duplizierung von Primärschlüsseln vermeiden. Wenn Sie den Primärschlüssel auf Null setzen, kann MySQL automatisch einen eindeutigen Wert zuweisen, wodurch das Risiko der Erstellung eines Duplikats vermieden wird.
Um die Singularität beim Einfügen sicherzustellen, sollten Sie LIMIT 1 an die INSERT INTO-Anweisung anhängen.
Darüber hinaus wird aus Gründen der Übersichtlichkeit empfohlen, den Primärschlüsselwert (z. B. „tmptable_1“ im Beispiel) in den Namen der temporären Tabelle aufzunehmen.
Das obige ist der detaillierte Inhalt vonWie dupliziere ich Zeilen in MySQL, ohne die Primärschlüsseleinschränkungen zu verletzen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!