Pourquoi utiliser AUTO_INCREMENT ?
Regardons à nouveau les tableaux des clients et des commandes. Les clients de la table clients sont identifiés de manière unique par la colonne cust_id et chaque client possède un numéro unique. De même, chaque commande de la table des commandes possède un numéro de commande unique, qui est stocké dans la colonne order_num. Ces nombres n’ont aucune signification particulière autre que le fait qu’ils sont uniques. Lors de l'ajout d'un nouveau client ou d'une nouvelle commande, un nouveau numéro de client ou numéro de commande est requis. Ces numéros peuvent être arbitraires tant qu'ils sont uniques.
Évidemment, le nombre le plus simple utilisé est le nombre suivant. Le nombre dit suivant est un nombre supérieur au nombre maximum actuel. Par exemple, si le nombre maximum de cust_id est de 10 005, le prochain client inséré dans la table peut avoir un cust_id égal à 10 006.
Est-ce simple ? pas nécessairement. Comment déterminez-vous la prochaine valeur à utiliser ? Bien sûr, vous pouvez utiliser une instruction SELECT pour trouver le plus grand nombre (à l'aide de la fonction Max()), puis y ajouter 1. Mais ce n'est pas fiable (vous devez trouver un moyen de vous assurer que personne d'autre n'insère de lignes entre les instructions SELECT et INSERT, ce qui est très probable pour les applications multi-utilisateurs), et ce n'est pas très efficace (effectuer des opérations MySQL supplémentaires est certainement pas idéal).
C'est là que AUTO_INCREMENT entre en jeu. Considérez la ligne de code suivante (partie de l'instruction CREATE TABLE utilisée pour créer la table clients) :
cust_id int NOT NULL AUTO_INCREMENT,
Utilisation d'AUTO_INCREMENT
AUTO_INCREMENT indique à MySQL que cette colonne Incrémentation automatique à chaque fois qu'une ligne est ajoutée. Chaque fois qu'une opération INSERT est effectuée, MySQL incrémente automatiquement la colonne (d'où le mot-clé AUTO_INCREMENT) et attribue la prochaine valeur disponible à la colonne. Cela attribue à chaque ligne un cust_id unique qui peut être utilisé comme valeur de clé primaire.
Remarque :
Une seule colonne AUTO_INCREMENT est autorisée par table, et elle doit être indexée (par exemple, en en faisant une clé primaire). Remplacement de AUTO_INCREMENT Si une colonne est spécifiée comme AUTO_INCRE-MENT, doit-elle utiliser une valeur spéciale ? Vous pouvez simplement spécifier une valeur dans l'instruction INSERT, et tant qu'elle est unique (n'a pas été utilisée jusqu'à présent), cette valeur sera utilisée à la place de la valeur générée automatiquement. Les incréments suivants commenceront à utiliser cette valeur insérée manuellement.
Inconvénients :
Détermination de la valeur AUTO_INCREMENT Un inconvénient de laisser MySQL générer (via l'incrémentation automatique) la clé primaire est que vous ne savez pas qui sont les valeurs sont.
sélectionnez la fonction last_insert_id()
Considérez ce scénario : vous ajoutez une nouvelle commande. Cela nécessite de créer une ligne dans la table des commandes, puis de créer une ligne dans la table des commandes pour chaque article commandé. order_num est stocké avec les détails de la commande dans la table orderitems. C'est pourquoi la table des commandes et la table des articles de commande sont des tables liées. Cela nécessite évidemment que vous connaissiez le order_num résultant après avoir inséré la ligne des commandes mais avant d'insérer la ligne des articles de commande.
Alors, comment obtenir cette valeur en utilisant la colonne AUTO_INCREMENT ? Cette valeur peut être obtenue à l'aide de la fonction last_insert_id() comme suit :
select last_insert_id()
Cette instruction renvoie la dernière valeur AUTO_INCREMENT, qui peut ensuite être utilisée dans les instructions MySQL suivantes.
[Recommandations associées]
Recommandation spéciale du site Web chinois php : Téléchargement de la boîte à outils du programmeur php (un clic pour créer un environnement php)
Explication détaillée des clés primaires dans la base de données MySQL
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!