English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
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.
Eine der einfachsten Methoden zur Verwendung von Sequenzen in MySQL ist die Verwendung von MySQL AUTO_INCREMENT zur Definition der Sequenz.
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)
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.
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 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);
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);
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;