Heim  >  Artikel  >  Datenbank  >  Können MySQL-Tabellen mehr als eine CURRENT_TIMESTAMP-Spalte haben?

Können MySQL-Tabellen mehr als eine CURRENT_TIMESTAMP-Spalte haben?

Mary-Kate Olsen
Mary-Kate OlsenOriginal
2024-10-30 11:31:03841Durchsuche

Can MySQL tables have more than one CURRENT_TIMESTAMP column?

Überwindung der Beschränkung mehrerer CURRENT_TIMESTAMP-Spalten in MySQL

Oft ist es wünschenswert, sowohl die Erstellungs- als auch die Aktualisierungszeitstempel von Daten in Datenbanktabellen zu verfolgen . In MySQL kann das Schlüsselwort CURRENT_TIMESTAMP verwendet werden, um eine Zeitstempelspalte automatisch mit dem aktuellen Datum und der aktuellen Uhrzeit zu füllen. MySQL hat jedoch eine Einschränkung, dass nur eine CURRENT_TIMESTAMP-Spalte in der CREATE-Anweisung einer Tabelle angegeben werden kann.

Behebung des Fehlers

Der Fehler, der beim Versuch, eine Tabelle zu erstellen, generiert wird mit mehreren CURRENT_TIMESTAMP-Spalten lautet:

ERROR 1293 (HY000): Incorrect table definition; there can be only one TIMESTAMP column with CURRENT_TIMESTAMP in DEFAULT or ON UPDATE clause

Dieser Fehler weist darauf hin, dass MySQL die Tabellendefinition nicht verarbeiten kann, da die Beschränkung auf mehrere CURRENT_TIMESTAMP-Spalten verletzt wird.

Lösung

Um diese Einschränkung zu überwinden, kann eine neuere Version von MySQL (5.6.25 oder höher) verwendet werden. In MySQL 5.6.25 und höher wurde die Beschränkung auf mehrere CURRENT_TIMESTAMP-Spalten entfernt. Dadurch können Sie eine Tabelle mit mehreren TIMESTAMP-Spalten definieren, die automatisch mit dem aktuellen Datum und der aktuellen Uhrzeit aktualisiert werden.

Zum Beispiel ist die folgende Tabellendefinition in MySQL 5.6.25 und höher gültig:

CREATE TABLE `msgs` (
    `id` INT PRIMARY KEY AUTO_INCREMENT,
    `msg` VARCHAR(256),
    `ts_create` TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
    `ts_update` TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
);

In dieser Tabellendefinition sind sowohl die Spalten ts_create als auch ts_update TIMESTAMP-Spalten, wobei CURRENT_TIMESTAMP als Standardwert für Einfüge- bzw. Aktualisierungsvorgänge festgelegt ist. Dadurch wird sichergestellt, dass die Zeitstempel automatisch mit dem aktuellen Datum und der aktuellen Uhrzeit aktualisiert werden, wenn Datensätze erstellt oder aktualisiert werden.

Das obige ist der detaillierte Inhalt vonKönnen MySQL-Tabellen mehr als eine CURRENT_TIMESTAMP-Spalte haben?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

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