SQL | Primärschlüssel nachträglich setzen

Von | März 31, 2024

Quelle: Datenbank/Primärschlüssel nachträglich setzen

Primärschlüssel anlegen

Wenn es in der Tabelle bereits eine Spalte gibt, die zum Primärschlüssel werden soll, kann diese mit dieser Abfrage geändert werden:

ALTER TABLE `tabelle` 
  CHANGE `id` `id` INT unsigned NOT NULL AUTO_INCREMENT, 
  ADD PRIMARY KEY (`id`);

Damit wird die Spalte id in einen numerischen Typ gewandelt, bekommt gleichzeitig die Eigenschaft AUTO_INCREMENT – damit neue Zeilen automatisch eine eindeutige ID bekommen – und die Spalte wird als Primärschlüssel definiert.

Sollte bereits eine geeignete numerische Spalte existieren oder eine Spalten mit einem anderen Datentyp als Primärschlüssel verwendet werden, kann der CHANGE-Teil in der Abfrage auch weggelassen werden:

ALTER TABLE `tabelle` 
  ADD PRIMARY KEY `id` (`id`);

Damit wird ohne eine Änderung aus der Spalte id ein Primärschlüssel.

Sollte eine als Primärschlüssel geeignete Spalte ganz fehlen, lässt sich eine solche Spalte auch neu anlegen:

ALTER TABLE `tabelle` 
  ADD `id` INT unsigned NOT NULL AUTO_INCREMENT PRIMARY KEY FIRST;

Die so angelegte Spalte hat die gleichen Eigenschaften wie die über die Abfrage oben geänderte Spalte. Durch das Schlüsselwort FIRST wird die neue Spalte als erste Spalte der Tabelle angelegt, mit AFTER `spalte` würde sie hinter der Spalte spalte angelegt werden.