Maison  >  Article  >  base de données  >  [Tutoriel MySQL] Utilisation de la séquence MySQL

[Tutoriel MySQL] Utilisation de la séquence MySQL

黄舟
黄舟original
2016-12-26 17:28:511142parcourir

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) !

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn