MySQL-Sequenz verwendet
MySQL-Sequenz ist eine Menge von ganzen Zahlen: 1, 2, 3, ..., da eine Datentabelle nur ein Feld mit einem automatisch inkrementierenden Primärschlüssel haben kann, wenn Sie möchten um auch andere Felder zu implementieren Um eine automatische Erhöhung zu erreichen, können Sie MySQL-Sequenzen verwenden, um dies zu erreichen.
In diesem Kapitel stellen wir die Verwendung von MySQL-Sequenzen vor.
AUTO_INCREMENT verwenden
Die einfachste Möglichkeit, Sequenzen in MySQL zu verwenden, besteht darin, MySQL AUTO_INCREMENT zum Definieren von Spalten zu verwenden.
Beispiel
Im folgenden Beispiel wird die Datentabelle „insekt“ erstellt. Die ID in „insekt“ kann automatisch wachsen, ohne einen Wert anzugeben.
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)
Rufen Sie den AUTO_INCREMENT-Wert ab
Im MySQL-Client können Sie die Funktion LAST_INSERT_ID() in SQL verwenden, um den Wert der letzten in die Tabelle eingefügten Spalte mit automatischer Inkrementierung abzurufen.
Entsprechende Funktionen werden auch in PHP- oder PERL-Skripten bereitgestellt, um den Wert der letzten in die Tabelle eingefügten Auto-Inkrement-Spalte zu erhalten.
PERL-Instanz
Verwenden Sie das Attribut mysql_insertid, um den Wert von AUTO_INCREMENT abzurufen. Das Beispiel sieht wie folgt aus:
$dbh->do ("INSERT INTO insect (name,date,origin) VALUES('moth','2001-09-14','windowsill')"); my $seq = $dbh->{mysql_insertid};
PHP-Beispiel
PHP verwendet die Funktion mysql_insert_id(), um den Wert der Spalte AUTO_INCREMENT in der ausgeführten SQL-Einfügeanweisung abzurufen.
mysql_query ("INSERT INTO insect (name,date,origin) VALUES('moth','2001-09-14','windowsill')", $conn_id); $seq = mysql_insert_id ($conn_id);
Reihenfolge zurücksetzen
Wenn Sie mehrere Datensätze in der Datentabelle löschen und die AUTO_INCREMENT-Spalte der verbleibenden Daten neu anordnen möchten, können Sie die Auto-Inkrement-Spalte löschen und dann erneut hinzufügen, um dies zu erreichen. Allerdings müssen Sie bei diesem Vorgang sehr vorsichtig sein. Wenn beim Löschen neue Datensätze hinzugefügt werden, kann es zu einem Datenchaos kommen. Die Operation 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);
Legen Sie den Startwert der Sequenz fest
Im Allgemeinen ist der Startwert der Sequenz 1, wenn Sie jedoch einen Startwert von 100 angeben müssen , dann können wir die folgende Anweisung übergeben, um Folgendes zu 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 auch die folgende Anweisung implementieren, nachdem die Tabelle erfolgreich erstellt wurde:
mysql> ALTER TABLE t AUTO_INCREMENT = 100;
Das Obige ist der Inhalt des [MySQL-Tutorials] MySQL-Sequenzverwendung. Weitere verwandte Inhalte finden Sie auf der chinesischen PHP-Website (www.php.cn)!