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:
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!