Maison > base de données > tutoriel mysql > Recherche et analyse du champ d'auto-incrémentation auto_commit

Recherche et analyse du champ d'auto-incrémentation auto_commit

黄舟
Libérer: 2017-02-17 11:44:23
original
1311 Les gens l'ont consulté


Champ d'auto-incrémentation MySQL, le compteur de champ d'auto-incrémentation se trouve dans le stockage principal, pas sur le disque dur (ce compteur est stocké uniquement dans la mémoire principale, pas sur le disque).
1. Ajoutez une table et configurez un champ de clé primaire à incrémentation automatique

create table t(id int primary key auto_increment, name varchar(3000)) engine=innodb;
Copier après la connexion

2. ou vous pouvez définir manuellement l'incrémentation automatique de l'entrée.

insert into t select 4, 'a44';
insert into t(name) select 'a8';
Copier après la connexion

3, interrogez la valeur d'auto-incrémentation de la table actuelle

SELECT MAX(id) FROM t FOR UPDATE;
Copier après la connexion

4, si vous définissez Si la valeur d'incrémentation automatique dépasse la valeur d'incrémentation automatique maximale actuelle, l'incrémentation automatique démarrera en fonction de la valeur d'incrémentation automatique que vous avez définie. Par exemple :
SELECT MAX(id) FROM t FOR UPDATE ; La valeur résultante est 4, puis vous insérez dans t select 9, 'a44' ;
Ensuite, la prochaine valeur d'auto-incrémentation est 16 au lieu de 5. Bien sûr, si vous exécutez l'instruction insert into t select 5, 'a44';, elle réussira.


5, s'il y a une transaction, la restauration est effectuée après l'insertion, et le compteur en autocommit ne sera pas annulé, toujours 1.


6 , paramètres

innodb_autoinc_lock_made
Copier après la connexion

Ajoutez une ligne directement dans my.cnf

[mysqld]
innodb_autoinc_lock_mode = 0
Copier après la connexion

Puis redémarrez la base de données mysql et exécutez show variables comme '%innodb_autoinc_lock_mode %'; pour trouver la valeur Si elle est 0, la modification est réussie.


7. Méthode de saisie pour une table avec uniquement des champs à incrémentation automatique

CREATE TABLE `t1` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
Copier après la connexion


7.1 Définissez la vôtre value insert Allez dans

insert into t1 select 1;
mysql> select * from t1;
+----+
| id |
+----+
|  1 |
+----+
1 row in set (0.00 sec)
Copier après la connexion


7.2 Appelez la fonction mysql LAST_INSERT_ID();

mysql> SELECT LAST_INSERT_ID();
+------------------+
| LAST_INSERT_ID() |
+------------------+
|                0 |
+------------------+
1 row in set (0.01 sec)
Copier après la connexion

ps : La valeur ici est 0 car la dernière insertion était la valeur saisie et cette fonction n'a pas été appelée, donc la valeur initiale est de 0, mais cela n'affecte pas la valeur d'insertion normale dans la table.


mysql> insert into t1 select LAST_INSERT_ID();
Query OK, 1 row affected (0.00 sec)
Records: 1  Duplicates: 0  Warnings: 0
mysql> select * from t1;
+----+
| id |
+----+
|  1 |
|  2 |
+----+
2 rows in set (0.00 sec)
mysql>
Copier après la connexion

Ce qui précède est le contenu de la recherche et de l'analyse du champ auto_commit ajouté automatiquement. Pour plus de contenu connexe, veuillez faire attention au PHP. Site chinois (www.php.cn) !


Étiquettes associées:
source:php.cn
Déclaration de ce site Web
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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal