Wenn Sie die Zeit für die Aktualisierung mit dem aktuellen Zeitstempel festlegen (ON UPDATE CURRENT_TIMESTAMP), ändert sich beim Aktualisieren des Felds nur der Feldwert. Ihr Zeitfeld ändert sich auf die Zeit des UPDATE-Vorgang.
CREATE TABLE `t_temp` ( `id` int(11) NOT NULL DEFAULT '0', `username` varchar(255) DEFAULT NULL, `upd_time` timestamp NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '默认取当前时间', PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
Dann fügen wir eine Datenzeile ein und führen dann eine Aktualisierung durch.
UPDATE t_temp SET username = 'mm' WHERE id = 1;
In ähnlicher Weise werden im Programm einige Frameworks verwendet, z. B. tk-mybatis, wenn die Aktualisierungsmethode verwendet wird (z. B. die Methode int updateByPrimaryKeySelective (T-Datensatz);), wenn das Feld nicht tatsächlich aktualisiert wird, obwohl die Syntax ausgeführt wird. Das Zeitfeld wird nicht aktualisiert, dies wird im System leicht übersehen.
CURRENT_TIMESTAMP() bezieht sich auf ON UPDATE und den Index
Grundwahrscheinlichkeit
Lassen Sie uns zum Schluss über Indizes sprechen. Ich habe vergessen, von wem es ist: Indizes sind eine besondere Art von Dateien (die Indizes in der InnoDB-Datentabelle sind eine Komponente des Tabellenbereichs). auf alle Datensätze in der Datentabelle.
Man kann sagen, dass der Datenbankindex wie das Inhaltsverzeichnis eines Buches ist, was die Geschwindigkeit von Datenbankabfragen erhöhen kann. Indizes werden in Clustered-Indizes und Nicht-Cluster-Indizes unterteilt. Cluster-Indizes werden nach dem physischen Speicherort der Daten geordnet. Nicht-Cluster-Indizes können jedoch die Geschwindigkeit des Abrufs mehrerer Zeilen erhöhen sind schnell für den Abruf einzelner Zeilen.
Wenn Sie zu viele Indizes erstellen, wirkt sich dies auf die Geschwindigkeit der Aktualisierungs- und Einfügevorgänge aus, da jede Indexdatei aktualisiert werden muss. Für eine Tabelle, die häufig aktualisiert und eingefügt werden muss, ist es nicht erforderlich, einen separaten Index für eine selten verwendete where-Klausel zu erstellen. Bei kleineren Tabellen ist der Sortieraufwand nicht sehr groß und es besteht keine Notwendigkeit, zusätzliche Indizes zu erstellen .
Code und Beispiele
Der folgende Tabellenerstellungscode:
CREATE TABLE timeDemo( id VARCHAR(64) NOT NULL, timeTest TIMESTAMP NOT NULL, PRIMARY KEY (id) );
Einschließlich Aktualisierungszeit, letzte Aktualisierungszeit:
CREATE TABLE timeDemo2( id VARCHAR(64) NOT NULL, createTime TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP(), updateTime TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP() ON UPDATE CURRENT_TIMESTAMP(), PRIMARY KEY (id) );
//Es wird kein Problem mit der oben genannten MySQL-Version 5.7 oder höher geben, aber es wird Probleme mit Versionen unter 5.7 geben
//Für Versionen unter 5.7 wird dies empfohlen Verwenden Sie das Programm zum Einfügen.
Hier verwenden wir 5.5, um die Wirkung von ON UPDATE zu demonstrieren
CREATE TABLE timeDemo3( id VARCHAR(64) NOT NULL, updateTime TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP() ON UPDATE CURRENT_TIMESTAMP(), PRIMARY KEY (id) );
Wenn einige Daten in dieser Tabelle geändert werden, wird der Wert von updateTime automatisch aktualisiert.
Bei jeder Aktualisierung dieses Datensatzes wird updateTime automatisch aktualisiert. In diesem Fall muss sich der Programmierer nicht selbst darum kümmern.Hier lässt sich feststellen, dass viele Internetunternehmen leider gerne MySQL 5.7 oder höher verwenden, während traditionelle Branchen immer noch MySQL 5.5 verwenden.
Sprechen wir über Indexschlüssel und Index
CREATE TABLE timeDemo4( id VARCHAR(64) NOT NULL, id2 VARCHAR(64) NOT NULL, updateTime TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP() ON UPDATE CURRENT_TIMESTAMP(), PRIMARY KEY (id), KEY(id2) )ENGINE=INNODB DEFAULT CHARSET=utf8
Der einzige Zweck eines normalen Index besteht darin, die Geschwindigkeit des Datenzugriffs zu verbessern. Diese Art von Index wird durch das Schlüsselwort KEY oder INDEX definiert. Daher sollten Indizes nur für diejenigen Datenspalten erstellt werden, die am häufigsten in Abfragebedingungen (Spalte WHERE = ...) oder Sortierbedingungen (Spalte ORDER BY) vorkommen.
Um einen Index zu erstellen, sollten Sie nach Möglichkeit die regelmäßigste und kompakteste Datenspalte auswählen, z. B. eine Datenspalte vom Typ Ganzzahl.
Das obige ist der detaillierte Inhalt vonSo lösen Sie das Problem der Verwendung von MySQL bei der Aktualisierung von current_timestamp. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!