Heim >Datenbank >MySQL-Tutorial >Welche Einschränkungen gab es bei der Verwendung von CURRENT_TIMESTAMP mit TIMESTAMP-Spalten in MySQL vor Version 5.6.5?

Welche Einschränkungen gab es bei der Verwendung von CURRENT_TIMESTAMP mit TIMESTAMP-Spalten in MySQL vor Version 5.6.5?

Barbara Streisand
Barbara StreisandOriginal
2024-12-15 16:20:13856Durchsuche

What Were the Restrictions on Using CURRENT_TIMESTAMP with TIMESTAMP Columns in MySQL Before Version 5.6.5?

Einschränkungen für TIMESTAMP-Spalten mit CURRENT_TIMESTAMP in DEFAULT- oder ON UPDATE-Klauseln in MySQL-Versionen vor 5.6.5

Historisch gesehen gab es in MySQL-Versionen vor 5.6.5 war eine Einschränkung, die eine Tabelle darauf beschränkte, nur eine TIMESTAMP-Spalte mit entweder DEFAULT zu haben CURRENT_TIMESTAMP- oder ON UPDATE CURRENT_TIMESTAMP-Klausel. Diese Einschränkung erstreckte sich bereits bei ihrer Einführung im Jahr 2008 auf Ganzzahlen vom Typ INT, BIGINT und SMALLINT.

Diese Einschränkung ergab sich aus Bedenken hinsichtlich der Legacy-Implementierung, die eine spezifische Implementierung für die CURRENT_TIMESTAMP-Funktionalität erforderlich machten.

Fehler Nachrichten und verwandte Probleme

Betrachten Sie beispielsweise die folgende Tabellendefinition, die versucht, zwei zu definieren TIMESTAMP-Spalten mit dem CURRENT_TIMESTAMP-Wert:

CREATE TABLE `foo` (
  `ProductID` INT(10) UNSIGNED NOT NULL,
  `AddedDate` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
  `UpdatedDate` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
) ENGINE=INNODB;

Diese Definition würde zu folgendem Fehler führen:

Fehlercode: 1293<br>Falsche Tabellendefinition; Es kann<br>nur eine TIMESTAMP-Spalte mit<br>CURRENT_TIMESTAMP in DEFAULT oder ON geben<br>UPDATE-Klausel

Dieser Fehler deutete darauf hin, dass die Tabellendefinition gegen die oben genannte Einschränkung verstoßen hat.

Aufhebung der Einschränkung

Trotz der technischen Grundlage für diese Einschränkung ist die Das MySQL-Team erkannte die Unannehmlichkeiten. Anschließend wurde die Einschränkung in MySQL 5.6.5 (veröffentlicht am 10. April 2012) aufgehoben.

Im Änderungsprotokoll für dieses Update hieß es:

Previously, at most one TIMESTAMP column per table could be automatically initialized or updated to the current date and time. This restriction has been lifted. Any TIMESTAMP column definition can have any combination of DEFAULT CURRENT_TIMESTAMP and ON UPDATE CURRENT_TIMESTAMP clauses. In addition, these clauses now can be used with DATETIME column definitions.

Das obige ist der detaillierte Inhalt vonWelche Einschränkungen gab es bei der Verwendung von CURRENT_TIMESTAMP mit TIMESTAMP-Spalten in MySQL vor Version 5.6.5?. 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