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

黄舟
黄舟original
2017-02-17 11:44:231309parcourir


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;

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';

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

SELECT MAX(id) FROM t FOR UPDATE;

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

Ajoutez une ligne directement dans my.cnf

[mysqld]
innodb_autoinc_lock_mode = 0

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;


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)


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)

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>

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


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