English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

MySQL Sequenznutzung

MySQL-Sequenz ist eine Gruppe von Integer:1, 2, 3, ..., da eine Datenbanktabelle nur einen selbstzunehmenden Primärschlüssel haben kann, Wenn Sie möchten, dass auch andere Felder automatisch zunehmen, können Sie Sequenzen in MySQL verwenden, um dies zu erreichen.

In diesem Kapitel werden wir erläutern, wie man Sequenzen in MySQL verwendet.

Mit AUTO_INCREMENT

Eine der einfachsten Methoden zur Verwendung von Sequenzen in MySQL ist die Verwendung von MySQL AUTO_INCREMENT zur Definition der Sequenz.

Online-Beispiel

Im folgenden Beispiel wurde die Datenbanktabelle Insekt erstellt: Insekt-Tabelle: id muss nicht angegeben werden, um automatische Zunahme zu ermöglichen.

mysql> CREATE TABLE insect
    -> (
    -> id INT UNSIGNED NOT NULL AUTO_INCREMENT,
    -> PRIMARY KEY (id),
    -> name VARCHAR(30) NOT NULL, # Art des Insekts
    -> date DATE NOT NULL, # Sammeldatum
    -> origin VARCHAR(30) NOT NULL # wo gesammelt
);
Abfrage OK, 0 Zeilen betroffen (0.02 sec)
mysql> INSERT INTO Insekt (id,name,date,origin) VALUES
    -> (NULL, 'Fliege', '"2001-09-10','Küche'),
    -> (NULL, 'Würmertier', '"2001-09-10','Einfahrt'),
    -> (NULL, 'Grashüpfer', }}2001-09-10','vorder Hof');
Query OK, 3 rows affected (0.02 sec)
Records: 3  Duplikate: 0 Warnings: 0
mysql> SELECT * FROM insect ORDER BY id;
+----+-------------+------------+------------+
| id | name |
+----+-------------+------------+------------+
|  1 | Hausfliege | 2001-09-10 | Küche |
|  2 | Hundertfüßler | 2001-09-10 | Einfahrt |
|  3 | Grashüpfer | 2001-09-10 | vorne Hof |
+----+-------------+------------+------------+
3 rows in set (0.00 sec)

AUTO_INCREMENT-Wert erhalten

Im MySQL-Client können Sie Die Funktion LAST_INSERT_ID() in SQL wird verwendet, um den Wert der inkrementierenden Spalte der letzten eingefügten Tabelle zu erhalten.

Auch in PHP- oder PERL-Skripten werden entsprechende Funktionen bereitgestellt, um den Wert der inkrementierenden Spalte der letzten eingefügten Tabelle zu erhalten.

PERL-Beispiel

Verwenden Sie das Attribut mysql_insertid, um den Wert von AUTO_INCREMENT zu erhalten. Beispiel:

$dbh->do("INSERT INTO insect (name,date,origin
VALUES('motte','2001-09-14','windowsill')");
my $seq = $dbh-{mysql_insertid};

PHP-Beispiel

PHP verwendet die Funktion mysql_insert_id (), um den Wert der AUTO_INCREMENT-Spalte des ausgeführten INSERT-SQL-Befehls zu erhalten.

mysql_query("INSERT INTO insect (name,date,origin)
VALUES('motte','2001-09-14','windowsill')", $conn_id);
$seq = mysql_insert_id($conn_id);

Sequenz zurücksetzen

Wenn Sie mehrere Zeilen in der Datenbanktabelle gelöscht haben und die AUTO_INCREMENT-Spalte der verbleibenden Daten neu anordnen möchten, können Sie dies durch Löschen der inkrementierenden Spalte und dann durch Neuzufügen erreichen. Allerdings muss man bei dieser Operation sehr vorsichtig sein, da es bei gleichzeitiger Löschung und hinzufügung neuer Datensätze zu Datenverwirrung kommen kann. Der Vorgang ist wie folgt dargestellt:

mysql> ALTER TABLE insect DROP id;
mysql> ALTER TABLE insect
    -> ADD id INT UNSIGNED NOT NULL AUTO_INCREMENT FIRST,
    -> ADD PRIMARY KEY (id);

Den Startwert der Sequenz einstellen

Der Standardwert für die Sequenz ist normalerweise1, aber wenn Sie einen Startwert angeben müssen100, dann können wir dies mit folgendem Statement erreichen:

mysql> CREATE TABLE insect
    -> (
    -> id INT UNSIGNED NOT NULL AUTO_INCREMENT,
    -> PRIMARY KEY (id),
    -> name VARCHAR(3) NOT NULL, 
    -> date DATE NOT NULL,
    -> origin VARCHAR(3) NOT NULL
)engine=innodb auto_increment=100 charset=utf8;

Oder Sie können dies auch nach dem erfolgreichen Erstellen der Tabelle mit folgendem Statement erreichen:

mysql> ALTER TABLE t AUTO_INCREMENT = 100;