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.