Das Schlüsselwort »AUTO_INCREMENT« in MySQL (Das Schlüsselwort »AUTO_INCREMENT« in MySQL), Lektion, Seite 724232
https://www.purl.org/stefan_ram/pub/auto_mysql (Permalink) ist die kanonische URI dieser Seite.
Stefan Ram
SQL-Kurs

Das Schlüsselwort »AUTO_INCREMENT« in MySQL

Wenn eine Primärschlüsselspalte mit »AUTO_INCREMENT« gekennzeichnet wird, dann muß beim Anlegen einer Zeile kein Wert für diese Spalte festgelegt werden. Das Datenbanksystem legt für diese Spalte beim Hinzufügen einer neuen Zeile dann automatisch einen Wert fest, der durch automatisches Hochzählen („automatisches Inkrementieren“) eines Zählers ermittelt wird.

Konsole

DROP SCHEMA IF EXISTS S; CREATE SCHEMA S; USE S;

CREATE TABLE MITGLIED
( MITGLIEDSNUMMER INT UNSIGNED PRIMARY KEY AUTO_INCREMENT,
NAME VARCHAR( 255 ) );

Query OK, 0 rows affected
SELECT * FROM MITGLIED;
Empty set
INSERT INTO MITGLIED( NAME )VALUES( 'Altiene Arndt' );
Query OK, 1 row affected
SELECT * FROM MITGLIED;

+-----------------+---------------+
| MITGLIEDSNUMMER | NAME |
+-----------------+---------------+
| 1 | Altiene Arndt |
+-----------------+---------------+

1 row in set

INSERT INTO MITGLIED( NAME )VALUES( 'Elke Hilbers' );
Query OK, 1 row affected (0.04 sec)
SELECT * FROM MITGLIED;

+-----------------+---------------+
| MITGLIEDSNUMMER | NAME |
+-----------------+---------------+
| 1 | Altiene Arndt |
| 2 | Elke Hilbers |
+-----------------+---------------+

2 rows in set

Auch bei Verwendung von »AUTO_INCREMENT« ist es möglich, die Primärschlüsseleigenschaft am Ende der Spaltenfestlegungen durch ein Komma abgetrennt festzulegen, beispielsweise als »PRIMARY KEY( THETA )«.

Konsole
CREATE TABLE THETA
( THETA INT UNSIGNED AUTO_INCREMENT,
PRIMARY KEY( THETA ));
Query OK, 0 rows affected

Persistierung des Zählerstandes

MySQL-Versionen vor 8.0 speicherten den Zählerstand nicht dauerhaft und stellten ihn dann nach einem Neustart aus dem Maximum der Spalte wieder her.

Lücken im KNP

Durch Operationen auf einer Tabelle, wie etwa dem Löschen von Zeilen, können Lücken bei den Werten einer Primärschlüsselspalte entstehen, etwa derart, daß der Werte »1« und der Wert »3« vorkommen, aber der dazwischenliegende Wert »2« nicht (mehr).

Solche Lücken sind bei der Numerierung in einem Schlüssel erlaubt. Es sollte nicht  versucht werden, die Lücken aufzufüllen oder die Tabelle neu zu numerieren, um eine Numerierung ohne Lücken zu erhalten, da beides nur Aufwand verursacht und Schaden anrichten kann, ohne etwas zu verbessern.

Drei unterschiedliche Zeilen mit einer Lücke (der Wert »2« fehlt)
 1
--------------------------------
3
--------------------------------
4

Seiteninformationen und Impressum   |   Mitteilungsformular  |   "ram@zedat.fu-berlin.de" (ohne die Anführungszeichen) ist die Netzpostadresse von Stefan Ram.   |   Eine Verbindung zur Stefan-Ram-Startseite befindet sich oben auf dieser Seite hinter dem Text "Stefan Ram".)  |   Der Urheber dieses Textes ist Stefan Ram. Alle Rechte sind vorbehalten. Diese Seite ist eine Veröffentlichung von Stefan Ram. Schlüsselwörter zu dieser Seite/relevant keywords describing this page: Stefan Ram Berlin slrprd slrprd stefanramberlin spellched stefanram724232 stefan_ram:724232 Das Schlüsselwort »AUTO_INCREMENT« in MySQL Stefan Ram, Berlin, and, or, near, uni, online, slrprd, slrprdqxx, slrprddoc, slrprd724232, slrprddef724232, PbclevtugFgrsnaEnz Erklärung, Beschreibung, Info, Information, Hinweis,

Der Urheber dieses Textes ist Stefan Ram. Alle Rechte sind vorbehalten. Diese Seite ist eine Veröffentlichung von Stefan Ram.
https://www.purl.org/stefan_ram/pub/auto_mysql