AUTO_INCREMENT ist die Eigenschaft einer Spalte in MySQL und MariaDB, die bei jedem neuen Datensatz automatisch eine aufsteigende Nummer erzeugt. Sie ist der einfachste Weg, einen Primärschlüssel zu vergeben, ohne selbst Werte mitzugeben.

So funktioniert AUTO_INCREMENT

Eine Spalte mit AUTO_INCREMENT erhält beim INSERT automatisch den nächsten freien Wert. Wird die Spalte in der INSERT-Liste weggelassen oder mit NULL befüllt, zählt die Datenbank selbst hoch:

CREATE TABLE kunden (
    id INT AUTO_INCREMENT PRIMARY KEY,
    name VARCHAR(100) NOT NULL
);

INSERT INTO kunden (name) VALUES ('Anna'), ('Ben');
-- id wird automatisch 1 und 2

Erlaubt ist nur eine AUTO_INCREMENT-Spalte pro Tabelle, und sie muss einen Index haben – in der Praxis ist das fast immer der Primärschlüssel. Der Datentyp muss ganzzahlig sein.

Den letzten Wert abfragen

Nach dem Einfügen liefert die Funktion LAST_INSERT_ID() die zuletzt vergebene ID der eigenen Verbindung. Das ist wichtig, wenn abhängige Datensätze (etwa Bestellpositionen) verknüpft werden müssen. Andere Verbindungen stören das Ergebnis nicht.

Lücken sind normal

Gelöschte Zeilen, zurückgerollte Transaktionen oder fehlgeschlagene Inserts hinterlassen Lücken in der Nummernfolge. Das ist kein Fehler: AUTO_INCREMENT garantiert nur Eindeutigkeit, nicht Lückenlosigkeit. Auch UPDATE verändert den Wert einer bestehenden Zeile nicht.

Wert zurücksetzen oder vorgeben

Mit ALTER TABLE kunden AUTO_INCREMENT = 1000 lässt sich der nächste Wert setzen, zum Beispiel um IDs ab einer runden Zahl zu vergeben. TRUNCATE setzt den Zähler in MySQL/MariaDB wieder auf den Startwert zurück. Seit MySQL 8.0 bleibt der Zähler von InnoDB-Tabellen auch über Neustarts hinweg erhalten.

Alternativen in anderen Datenbanken

MySQL und MariaDB sind mit AUTO_INCREMENT nicht allein: IDENTITY-Spalten erfüllen dieselbe Aufgabe in SQL Server, PostgreSQL und Oracle. Und SEQUENCE-Objekte erzeugen Nummernfolgen als eigenständige Datenbankobjekte – MariaDB kann beides.

Verwandte Grundlagen: CREATE TABLE, SQL-Datentypen, SQL-Grundlagen, MariaDB.