Ich bin Tring diesealle Zeilen in einer Tabelle duplizieren und verhindern, doppelte Schlüssel
- alle Zeilen in einer Tabelle mit dem Namen Blogs Holen Sie tun.
- sie in einer temporären Datenbank kopieren
- Bearbeiten Sie die Sprache Feld dieser temporären Tabelle Datensätze
- in die Blogs Tabelle einfügen
Und ich bin es so versuchen:
CREATE TEMPORARY TABLE tmptable SELECT * FROM blogs WHERE lan = 2;
UPDATE tmptable SET lan = 1;
INSERT INTO blogs SELECT * FROM tmptable; dump database tmptable;
Aber von kors bekomme ich doppelten Schlüsselfehler ...
Wie kann ich es verhindern?
-EDIT-
I Tried:
CREATE TEMPORARY TABLE tmptable SELECT * FROM blogs WHERE lan = 2;
UPDATE tmptable SET lan = 1;
ALTER TABLE tmptable DROP id;
INSERT INTO blogs SELECT * FROM tmptable; dump database tmptable;
Aber dann die Column count doesn't match value count at row 1
-EDIT-
Ich glaube, das funktioniert (und es tat, weil ich weiß, wie viele Datensätze existieren)
CREATE TEMPORARY TABLE tmptable SELECT * FROM blogs WHERE lan = 2;
UPDATE tmptable SET lan = 1;
UPDATE tmptable SET id = id + 1000;
INSERT INTO blogs SELECT * FROM tmptable;
Aber wie kann ich es richtig machen? (Set nur den nächsten avaliable autoincrement Wert für Primärschlüssel (id) (ohne PHP/gleichermaßen))
-EDIT-
vielleicht so etwas wie dieses ???
CREATE TEMPORARY TABLE tmptable SELECT * FROM blogs WHERE lan = 2;
UPDATE tmptable SET lan = 1;
UPDATE tmptable SET id = id + (SELECT id FROM blogs ORDER BY id DESC LIMIT 1);
INSERT INTO blogs SELECT * FROM tmptable;
die id der blogs table ist eine identität? – TeKapa
ist der Primärschlüssel, einzigartig und Autoincrement. Ja! –
Warum ändern Sie nicht einfach Ihre INSERT-Anweisung, um ON DUPLICATE KEY UPDATE zu verwenden? –