Heim > Datenbank > MySQL-Tutorial > Hauptteil

Forschung und Analyse des Auto-Inkrement-Feldes auto_commit

黄舟
Freigeben: 2017-02-17 11:44:23
Original
1279 Leute haben es durchsucht


MySQL-Auto-Inkrement-Feld, der Auto-Inkrement-Feldzähler befindet sich im Hauptspeicher, nicht auf der Festplatte (Dieser Zähler wird nur im Hauptspeicher, nicht auf der Festplatte gespeichert).
1. Fügen Sie eine Tabelle hinzu und richten Sie ein Auto-Inkrement-Primärschlüsselfeld ein.

create table t(id int primary key auto_increment, name varchar(3000)) engine=innodb;
Nach dem Login kopieren

2. Sie können das System automatisch inkrementieren lassen. Alternativ können Sie die Eingabe automatisch inkrementieren.

insert into t select 4, 'a44';
insert into t(name) select 'a8';
Nach dem Login kopieren

3, fragen Sie den automatischen Inkrementwert der aktuellen Tabelle ab

SELECT MAX(id) FROM t FOR UPDATE;
Nach dem Login kopieren

4, Wenn Sie Folgendes festlegen: Wenn der Autoinkrementwert den aktuellen maximalen Autoinkrementwert überschreitet, startet die Autoinkrementierung basierend auf dem von Ihnen festgelegten Autoinkrementwert. Zum Beispiel:
SELECT MAX(id) FROM t FOR UPDATE. Der resultierende Wert ist 4, und dann fügen Sie in t select 9, 'a44' ein. Dann ist MAX(id) zu diesem Zeitpunkt 9,
Dann ist der nächste Wert für die automatische Inkrementierung 16 statt 5. Wenn Sie die Anweisung insert into t select 5, 'a44'; ausführen, wird sie natürlich erfolgreich sein.


5, wenn eine Transaktion vorliegt, Rollback nach dem Einfügen, der Zähler im Autocommit wird nicht zurückgesetzt, immer noch +1.


6, Parameter

innodb_autoinc_lock_made
Nach dem Login kopieren

Fügen Sie eine Zeile direkt in my.cnf hinzu

[mysqld]
innodb_autoinc_lock_mode = 0
Nach dem Login kopieren

und starten Sie dann die MySQL-Datenbank neu und führen Sie Show-Variablen wie „%innodb_autoinc_lock_mode%“ aus. '; gefunden Wenn der Wert 0 ist, ist die Änderung erfolgreich.


7. Eingabemethode für eine Tabelle mit nur automatisch inkrementierenden Feldern

CREATE TABLE `t1` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
Nach dem Login kopieren


7.1 Legen Sie Ihre eigene fest Wert einfügen Geh hinein

insert into t1 select 1;
mysql> select * from t1;
+----+
| id |
+----+
|  1 |
+----+
1 row in set (0.00 sec)
Nach dem Login kopieren


7.2 Rufen Sie die MySQL-Funktion LAST_INSERT_ID();

mysql> SELECT LAST_INSERT_ID();
+------------------+
| LAST_INSERT_ID() |
+------------------+
|                0 |
+------------------+
1 row in set (0.01 sec)
Nach dem Login kopieren
< auf 🎜>

ps: Der Wert hier ist 0, da die letzte Einfügung der eingegebene Wert war und diese Funktion nicht aufgerufen wurde. Der Anfangswert liegt also bei 0, hat jedoch keinen Einfluss auf den normalen Einfügungswert in die Tabelle.


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>
Nach dem Login kopieren
Das Obige ist der Inhalt der Recherche und Analyse des automatisch hinzugefügten Feldes auto_commit. Für weitere verwandte Inhalte achten Sie bitte auf PHP Chinesische Website (www.php.cn)!


Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage