Primärschlüssel in MySQL-Tabellen aktualisieren

Mehvish Ashiq 15 Februar 2024
  1. Primärschlüssel in MySQL-Tabellen aktualisieren
  2. Löschen Sie den vorhandenen Primärschlüssel und erstellen Sie einen neuen Primärschlüssel mit einer anderen Spalte in MySQL
  3. Aktualisieren Sie die Anzahl der Spalten, die an der Erstellung des Primärschlüssels in MySQL beteiligt sind
  4. Aktualisieren Sie den MySQL-Primärschlüssel, indem Sie seinen Datentyp ändern
Primärschlüssel in MySQL-Tabellen aktualisieren

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.

  1. Löschen Sie den vorhandenen Primärschlüssel und erstellen Sie einen neuen Primärschlüssel mit einer anderen Spalte.
  2. Aktualisieren Sie die Anzahl der Spalten, die an der Erstellung des Primärschlüssels beteiligt sind.
  3. Ä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:

Aktualisieren Sie den Primärschlüssel in MySQL-Tabellen - Tabellendefinition Teil eins

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:

Aktualisieren Sie den Primärschlüssel in MySQL-Tabellen - Tabellendefinition Teil zwei

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:

Primärschlüssel in MySQL-Tabellen aktualisieren - Tabellendefinition Teil 3

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:

Primärschlüssel in MySQL-Tabellen aktualisieren - Tabellendefinition Teil 4

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:

Primärschlüssel in MySQL-Tabellen aktualisieren - Tabellendefinition Teil 5

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.

  1. 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.

  2. 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.

  3. 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.

  4. 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.

Mehvish Ashiq avatar Mehvish Ashiq avatar

Mehvish Ashiq is a former Java Programmer and a Data Science enthusiast who leverages her expertise to help others to learn and grow by creating interesting, useful, and reader-friendly content in Computer Programming, Data Science, and Technology.

LinkedIn GitHub Facebook