Gewusst wie: einfügen von Zeilen in phpMyAdmin
Ich habe eine Datenbank die ich geöffnet habe, in phpMyAdmin. Klickte ich auf die "Einfügen" Taste, die ein Symbol zeigen, wird eine Zeile eingefügt werden, die zwischen zwei anderen.
Wenn ich tatsächlich versuchen, eine Zeile einfügen, bekomme ich die folgende Fehlermeldung:
1062 - Doppelter Eintrag '294' für Schlüssel 'PRIMARY'
Wie bekomme ich phpMyAdmin einfügen einer Zeile (vermutlich durch die Erhöhung alle höher nummerierten Zeilen von 1) als das Symbol und der Begriff "Insert" bedeutet? Es scheint nur zu wollen, um "Hinzufügen" eine Zeile zu Ende, nicht "Insert" es.
Wie gesagt, das Symbol, die speziell zeigt eine Zeile eingefügt werden zwischen zwei anderen, und das ist, was ich tun will. Wie bekomme ich es tun, was es behauptet, zu tun?
- Warum müssen Sie legen Sie zwischen zwei Zeilen? Und ich gehe davon aus, dass "zwischen zwei Zeilen" bedeutet, dass Sie möchten, um eine Zeile einfügen, die mit einem bestimmten Primärschlüssel-Wert? Sie NICHT wollen, verwenden Sie die auto-Inkrement-Funktion?
- Ich nehme an, dass auto-Inkrement-würde hinzufügen einer Zeile an das Ende. Ich möchte die aktuelle Zeile 294 zu 295, 295 zu werden, 296, etc., den ganzen Weg bis zum Ende. In anderen Worten, mit phpMyAdmin, ich möchte eine Zeile einfügen die gleichen, als würde ich in einer Excel-Tabelle, so dass alle höher nummerierten Zeilen nach unten ein. Das Symbol sieht genauso aus, wie in Excel, aber es scheint nicht zu funktionieren auf die gleiche Weise.
- Ich bin nicht vertraut mit dieser Art von Funktion, klingt wie Sie haben, um zu realisieren, dass Sie sich. Es ist nicht ratsam zu versuchen, ändern Sie den Primärschlüssel einer Reihe von Zeilen oder alle Zeilen für diese Angelegenheit...
Du musst angemeldet sein, um einen Kommentar abzugeben.
Erste, "INSERT" SQL-standard-Terminologie für die, die etwas in der Datenbank; es muss nicht konkret "um es zwischen zwei bereits vorhandenen Werten". Ich sehe, wie das Symbol kann ein bisschen verwirrend sein, aber wenn "insertting" Daten gibt es keinen Unterschied dazwischen, etwas am Ende oder in der Mitte der Datenbank. Für diese Angelegenheit, es gibt keinen wirklichen inhärenten, um Daten in einer Datenbank gespeichert; Sie können wählen, viele verschiedene Möglichkeiten zu Sortieren, wenn Sie die Anzeige der Daten (und phpMyAdmin in der Regel macht einen guten job zu erraten, was ist vernünftig), aber Daten vorhanden. Sie können wählen Sie die Sortierung nach dem Primärschlüssel oder alphabetisch nach Benutzernamen oder auf jegliche Weise, die Sie wünschen.
Zweitens ist der primary key sollte nicht ändern. Es ist der Schlüssel, der hält Ihre Daten zusammen; wenn Sie beginnen zu ändern, dass Ihre Referenzen von anderen Tabellen verhunzt werden (siehe unten). Also nicht ändern.
Dritten, wenn Sie Ihren primary key mit auto_increment (die
A_I
checkbox in phpMyAdmin), dann sollten Sie nicht immer brauchen, um es oder Sie kümmern sich selbst. Es ist alles geschafft, die von MySQL. Wenn Sie sind nicht zufrieden mit der Bestellung und bewegen wollen 294 295 so können Sie etwas anderes auf 294, dann ist dein Datenbank-design-Bedürfnisse zu optimieren, denn das ist nicht, wie auto_incrementing Primärschlüssel sind entworfen, um zu arbeiten. Als eine einfache Lösung, möchten Sie möglicherweise erstellen Sie ein weiteres Feld namens "sort_value" oder etwas, das Sie ändern können.Das alles bringt mich zu der Ursache Ihrer Schwierigkeiten: Sie versuchen, erstellen eine neue Zeile, während die Wiederverwendung einer vorhandenen auto_increment-Wert, und MySQL ist smart genug, um zu wissen, dass dies eine schlechte Idee.
So, wie ich oben sagte, ändern Sie Ihre primary key (egal ob oder nicht, es ist automatisch generiert), ist eine schlechte Idee, aber kann es nicht offensichtlich sein, warum, wenn Sie nur eine Tabelle. Aber relationale Datenbanken sind so konzipiert, dass Sie verweisen können, um Tabellen von anderen Tabellen, so zum Beispiel eine Kunden-Datenbank könnte eine Tabelle "Kunden", "Produkte" und "Einkäufe", wo die Einkäufe, die Tabelle verweist auf den Primärschlüssel ID von Kunden und Produkten...stellen Sie sich das Blutbad Ihre Daten sehen würde, wenn Sie dann ändern Sie den Wert der Schlüssel in der customer-Tabelle. Sie würde zeigen, Kunden im Zusammenhang mit einigen anderen Kunden Einkäufe. So könnte es nicht Sinn machen in Ihrer Datenbank haben, aber insgesamt das ist der beste Weg, um Dinge zu handhaben.
Wenn Sie wirklich, wirklich nicht wollen, ändern Sie die Struktur der Datenbank, nicht die Referenz, Schlüssel aus anderen Tabellen, und wollen nicht hören Sie mein Rat, Sie sollten in der Lage sein, einfach schalten Sie die auto_increment-Funktion auf dem primären Schlüssel und ordnen Sie Sie wie Sie wollen.