Primärschlüssel in MySQL-Tabellen aktualisieren
- Primärschlüssel in MySQL-Tabellen aktualisieren
- Löschen Sie den vorhandenen Primärschlüssel und erstellen Sie einen neuen Primärschlüssel mit einer anderen Spalte in MySQL
- Aktualisieren Sie die Anzahl der Spalten, die an der Erstellung des Primärschlüssels in MySQL beteiligt sind
- Aktualisieren Sie den MySQL-Primärschlüssel, indem Sie seinen Datentyp ändern
In diesem Tutorial erfahren Sie, wie Sie den Primärschlüssel in MySQL-Tabellen aktualisieren. Wir verwenden den Befehl ALTER
, um Änderungen am Primärschlüssel vorzunehmen.
Primärschlüssel in MySQL-Tabellen aktualisieren
Es gibt verschiedene Szenarien, in denen wir den Primärschlüssel in MySQL-Tabellen aktualisieren können. Sehen wir uns jeden von ihnen unten an.
- Löschen Sie den vorhandenen Primärschlüssel und erstellen Sie einen neuen Primärschlüssel mit einer anderen Spalte.
- Aktualisieren Sie die Anzahl der Spalten, die an der Erstellung des Primärschlüssels beteiligt sind.
- Ändern Sie den Datentyp des Primärschlüssels.
Wir können den Befehl ALTER
verwenden, der später in diesem Tutorial praktisch demonstriert wird, um den Primärschlüssel zu ändern.
Löschen Sie den vorhandenen Primärschlüssel und erstellen Sie einen neuen Primärschlüssel mit einer anderen Spalte in MySQL
Angenommen, wir haben eine Tabelle users
in der Datenbank test
, deren Primärschlüssel das Attribut ID
ist. Aus irgendeinem Grund wollen wir ihn löschen und einen neuen Primärschlüssel mit der Spalte USERNAME
erstellen.
Tabelle Benutzer
erstellen:
#create a table named 'users' in 'test' database
CREATE TABLE `test`.`users` (
`ID` INT NOT NULL AUTO_INCREMENT,
`USERNAME` VARCHAR(45) NOT NULL,
`EMAIL` VARCHAR(45) NOT NULL,
PRIMARY KEY (`ID`));
Verwenden Sie die folgende Abfrage, um die Tabellendefinition zu überprüfen.
SHOW CREATE TABLE test.users;
Es wird die folgende Ausgabe angezeigt; Ihre Ergebnisse können abweichen, wenn Sie eine andere Tabelle verwenden.
Ausgang:
Um den Primärschlüssel von ID
auf das Feld USERNAME
zu aktualisieren, müssen wir zuerst das AUTO_INCREMENT
aus dem Attribut ID
löschen; Andernfalls wird ein Fehler generiert.
Löschen Sie AUTO_INCREMENT
für das ID
-Feld:
# Disable foreign key check
SET FOREIGN_KEY_CHECKS=0;
# Modify the `ID` attribute
ALTER TABLE test.users MODIFY COLUMN ID INT NOT NULL;
# Enable foreign key check
SET FOREIGN_KEY_CHECKS=1;
Verwenden Sie SHOW CREATE TABLE test.users;
um zu bestätigen, dass AUTO_INCREMENT
gelöscht wird.
Ausgang:
Primärschlüssel aktualisieren:
ALTER TABLE test.users DROP PRIMARY KEY, ADD PRIMARY KEY(USERNAME);
Verwenden Sie SHOW CREATE TABLE test.users;
erneut, um sicherzustellen, dass der Primärschlüssel USERNAME
ist.
Ausgang:
Aktualisieren Sie die Anzahl der Spalten, die an der Erstellung des Primärschlüssels in MySQL beteiligt sind
Wir fahren mit der Tabelle Benutzer
fort, die wir im vorherigen Abschnitt erstellt haben. Der Primärschlüssel war die Spalte USERNAME
, die mit der folgenden Abfrage leicht überprüft werden kann.
SHOW CREATE TABLE test.users;
Wir verwenden den Befehl ALTER
, um den Primärschlüssel zu aktualisieren, der jetzt aus zwei Spalten besteht, ID
und USERNAME
.
ALTER TABLE test.users DROP PRIMARY KEY, ADD PRIMARY KEY(ID, USERNAME);
Wir können den aktualisierten Primärschlüssel mit der folgenden Abfrage bestätigen.
SHOW CREATE TABLE test.users;
Ausgang:
Aktualisieren Sie den MySQL-Primärschlüssel, indem Sie seinen Datentyp ändern
Hier erstellen wir eine weitere Tabelle und nennen sie user
, wobei der Primärschlüssel das ID
-Feld vom Typ INT
ist.
CREATE TABLE `test`.`user` (
`ID` INT NOT NULL AUTO_INCREMENT,
`USERNAME` VARCHAR(45) NOT NULL,
`EMAIL` VARCHAR(45) NOT NULL,
PRIMARY KEY (`ID`));
Wir können die folgenden Abfragen verwenden, um den Datentyp eines vorhandenen Primärschlüssels von INT
auf BIGINT
zu aktualisieren.
SET FOREIGN_KEY_CHECKS=0;
ALTER TABLE test.users MODIFY COLUMN ID BIGINT NOT NULL AUTO_INCREMENT;
SET FOREIGN_KEY_CHECKS=1;
Bestätigen Sie die Änderungen, indem Sie eine Abfrage verwenden, die unten angegeben ist.
SHOW CREATE TABLE test.user;
Ausgang:
Das Aktualisieren des Primärschlüssels in der MySQL-Tabelle ist nicht schwierig, bevor Beziehungen in der Datenbank hergestellt werden, aber es wird aus den folgenden grundlegenden Gründen dringend davon abgeraten, nachdem die Beziehungen in der Datenbank hergestellt wurden.
-
Wenn Sie auf die Idee gekommen sind, den Primärschlüssel in der laufenden Datenbank zu ändern, haben Sie wahrscheinlich das falsche Feld für den Primärschlüssel ausgewählt. Seien Sie also besonders vorsichtig bei der Auswahl der Felder als Primärschlüssel.
-
Sie werden aufgefordert, den Datensatz zu löschen, für den Sie versuchen, den Primärschlüssel zu ändern. Möglicherweise müssen Sie alle Beziehungen für diesen bestimmten Datensatz verlieren.
Wenn Sie den Primärschlüssel ändern, müssen Sie diesen Datensatz hinzufügen und erneut Beziehungen erstellen.
-
Wenn Sie den Primärschlüssel von einer Spalte auf drei Spalten ändern, muss der neue Primärschlüssel (bestehend aus drei Spalten) in allen anderen zugehörigen Tabellen als Fremdschlüssel verwendet werden. Denken Sie daran, dass dies Auswirkungen auf Speicher, Leistung und Design haben kann.
-
Jede Änderung des Primärschlüssels wird niemals innerhalb der Datenbank empfohlen, außer wenn Sie die Datenbank während der MIGRATION oder DATEI-REORGANISATION rekonstruieren. Sie müssen jedoch besonders vorsichtig sein, da diese Primärschlüssel möglicherweise als Fremdschlüssel in anderen Tabellen verwendet werden.