MySQL-Sequenz
MySQL ist eine Folge von ganzen Zahlen: 1, 2, 3, ..., wie eine Datentabelle nur ein Feld Schritt Primärschlüssel haben können, wenn Sie zusätzliche Felder implementieren möchten automatisch erhöht werden, können Sie MySQL-Sequenzen verwenden können, zu erreichen.
In diesem Kapitel beschreiben wir, wie MySQL-Sequenzen zu verwenden.
Verwenden Sie AUTO_INCREMENT
MySQL einfachste Methode ist, um eine Sequenz zu verwenden, um die Verwendung von MySQL AUTO_INCREMENT Spalten zu definieren.
Beispiele
Im folgenden Beispiel wird eine Datentabelle Insekt, Insekten, ohne den Wert von id Angabe automatisch erhöhen.
mysql> CREATE TABLE insect -> ( -> id INT UNSIGNED NOT NULL AUTO_INCREMENT, -> PRIMARY KEY (id), -> name VARCHAR(30) NOT NULL, # type of insect -> date DATE NOT NULL, # date collected -> origin VARCHAR(30) NOT NULL # where collected ); Query OK, 0 rows affected (0.02 sec) mysql> INSERT INTO insect (id,name,date,origin) VALUES -> (NULL,'housefly','2001-09-10','kitchen'), -> (NULL,'millipede','2001-09-10','driveway'), -> (NULL,'grasshopper','2001-09-10','front yard'); Query OK, 3 rows affected (0.02 sec) Records: 3 Duplicates: 0 Warnings: 0 mysql> SELECT * FROM insect ORDER BY id; +----+-------------+------------+------------+ | id | name | date | origin | +----+-------------+------------+------------+ | 1 | housefly | 2001-09-10 | kitchen | | 2 | millipede | 2001-09-10 | driveway | | 3 | grasshopper | 2001-09-10 | front yard | +----+-------------+------------+------------+ 3 rows in set (0.00 sec)
Erhalten Sie AUTO_INCREMENT Wert
In MySQL-Client können Sie die SQL-Funktion LAST_INSERT_ID () verwenden, um die letzten Wert in der Tabelle des Autoinkrement eingefügt abzurufen.
In PHP oder Perl-Skript bietet auch eine entsprechende Funktion, um den Wert für die zuletzt eingefügten Tabelle Autoinkrement von zu bekommen.
PERL Beispiele
Verwenden Sie mysql_insertid Eigenschaft den Wert von AUTO_INCREMENT zu bekommen. Beispiele sind wie folgt:
$dbh->do ("INSERT INTO insect (name,date,origin) VALUES('moth','2001-09-14','windowsill')"); my $seq = $dbh->{mysql_insertid};
PHP Beispiele
PHP den Wert in die SQL-Anweisung ausgeführt AUTO_INCREMENT Spalte von mysql_insert_id () Funktion zu erhalten.
mysql_query ("INSERT INTO insect (name,date,origin) VALUES('moth','2001-09-14','windowsill')", $conn_id); $seq = mysql_insert_id ($conn_id);
Reset-Sequenz
Wenn Sie die Daten in der Tabelle mehrere Datensätze zu löschen, und hoffen, dass Spalten die restlichen Daten AUTO_INCREMENT neu zu ordnen, dann können Sie Spalten löschen wachsen, dann erneut hinzufügen, um es zu erreichen. Um jedoch die Bedienung sehr vorsichtig, wenn Sie einen neuen Rekord haben bei gleichzeitig entfernt hinzugefügt, kann es Daten Chaos. Der Betrieb ist wie folgt:
mysql> ALTER TABLE insect DROP id; mysql> ALTER TABLE insect -> ADD id INT UNSIGNED NOT NULL AUTO_INCREMENT FIRST, -> ADD PRIMARY KEY (id);
Stellen Sie den Startwert der Sequenz
Unter normalen Umständen Sequenz Startwert von 1, aber wenn Sie einen Startwert von 100 angeben müssen, dann können wir die folgende Anweisung erreichen:
mysql> CREATE TABLE insect -> ( -> id INT UNSIGNED NOT NULL AUTO_INCREMENT = 100, -> PRIMARY KEY (id), -> name VARCHAR(30) NOT NULL, # type of insect -> date DATE NOT NULL, # date collected -> origin VARCHAR(30) NOT NULL # where collected );
Oder Sie können eine Tabelle in der durch die folgende Aussage erzielten Erfolge zu erstellen:
mysql> ALTER TABLE t AUTO_INCREMENT = 100;