Utilisation d'une séquence MySQL
La séquence MySQL est un ensemble d'entiers : 1, 2, 3, ..., puisqu'une table de données ne peut avoir qu'un seul champ avec une clé primaire auto-incrémentée, si vous le souhaitez pour implémenter également d'autres champs. Pour obtenir une augmentation automatique, vous pouvez utiliser des séquences MySQL pour y parvenir.
Dans ce chapitre, nous présenterons comment utiliser les séquences MySQL.
Utiliser AUTO_INCREMENT
La façon la plus simple d'utiliser des séquences dans MySQL est d'utiliser MySQL AUTO_INCREMENT pour définir des colonnes.
Exemple
Dans l'exemple suivant, la table de données insectes est créée. L'ID dans insectes peut croître automatiquement sans spécifier de valeur.
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)
Obtenir la valeur AUTO_INCREMENT
Dans le client MySQL, vous pouvez utiliser la fonction LAST_INSERT_ID() en SQL pour obtenir la valeur de la dernière colonne d'auto-incrémentation insérée dans la table.
Des fonctions correspondantes sont également fournies dans les scripts PHP ou PERL pour obtenir la valeur de la dernière colonne d'auto-incrémentation insérée dans la table.
Instance PERL
Utilisez l'attribut mysql_insertid pour obtenir la valeur de AUTO_INCREMENT. L'exemple est le suivant :
$dbh->do ("INSERT INTO insect (name,date,origin) VALUES('moth','2001-09-14','windowsill')"); my $seq = $dbh->{mysql_insertid};
Exemple PHP
PHP utilise la fonction mysql_insert_id() pour obtenir la valeur de la colonne AUTO_INCREMENT dans l'instruction SQL d'insertion exécutée.
mysql_query ("INSERT INTO insect (name,date,origin) VALUES('moth','2001-09-14','windowsill')", $conn_id); $seq = mysql_insert_id ($conn_id);
Réinitialiser la séquence
Si vous supprimez plusieurs enregistrements dans la table de données et souhaitez réorganiser la colonne AUTO_INCREMENT des données restantes, vous pouvez supprimer la colonne d'incrémentation automatique, puis réorganiser -ajouter pour y parvenir. Cependant, vous devez être très prudent lors de cette opération. Si de nouveaux enregistrements sont ajoutés lors de la suppression, un chaos de données peut survenir. Le fonctionnement est le suivant :
mysql> ALTER TABLE insect DROP id; mysql> ALTER TABLE insect -> ADD id INT UNSIGNED NOT NULL AUTO_INCREMENT FIRST, -> ADD PRIMARY KEY (id);
Définir la valeur de départ de la séquence
Généralement, la valeur de départ de la séquence est 1, mais si vous devez spécifier une valeur de départ de 100 , nous pouvons alors transmettre l'instruction suivante pour réaliser :
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 );
Ou vous pouvez également implémenter l'instruction suivante une fois la table créée avec succès :
mysql> ALTER TABLE t AUTO_INCREMENT = 100;
Ce qui précède est le contenu de [tutoriel mysql] Utilisation de la séquence MySQL Pour plus de contenu connexe, veuillez faire attention au site Web PHP chinois (www.php.cn) !