Heim > Datenbank > MySQL-Tutorial > Hauptteil

Wie dupliziere ich Zeilen in MySQL, ohne die Primärschlüsseleinschränkungen zu verletzen?

Linda Hamilton
Freigeben: 2024-11-11 16:04:02
Original
128 Leute haben es durchsucht

How to Duplicate Rows in MySQL Without Violating Primary Key Constraints?

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
Nach dem Login kopieren

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;
Nach dem Login kopieren

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;
Nach dem Login kopieren

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!

Quelle:php.cn
Erklärung dieser Website
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
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage