Heim >Datenbank >MySQL-Tutorial >Forschung und Analyse des Auto-Inkrement-Feldes auto_commit

Forschung und Analyse des Auto-Inkrement-Feldes auto_commit

黄舟
黄舟Original
2017-02-17 11:44:231309Durchsuche


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;

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

3, fragen Sie den automatischen Inkrementwert der aktuellen Tabelle ab

SELECT MAX(id) FROM t FOR UPDATE;

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

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

[mysqld]
innodb_autoinc_lock_mode = 0

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;


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)


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)

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


Stellungnahme:
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