webentwicklung-frage-antwort-db.com.de

Wie ändere ich die Standardeinstellungen einer MySQL-Tabellenspalte?

Ich habe eine Tabelle mit einer Spalte vom Typ timestamp, die standardmäßig current_timestamp und Updates zu current_timestamp bei jedem Update.

Ich möchte die Funktion "Beim Update" in dieser Spalte entfernen. Wie schreibe ich die alter-Anweisung?

Ich habe versucht, die folgenden:

ALTER TABLE mytable alter column time  set DEFAULT now();

aber das hat nicht funktioniert.

54
Tihom

Pete war fast korrekt, verwendete aber die falsche Syntax für 'change':

ALTER TABLE mytable CHANGE `time` `time` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP

Beachten Sie, dass Sie den Spaltennamen wiederholen müssen. Stellen Sie außerdem sicher, dass Sie Backticks anstelle von einfachen Anführungszeichen verwenden, um die Zeit des Spaltennamens zu umgehen. Dadurch wird verhindert, dass dieser als Zeittyp der mysql-Spalte interpretiert wird.

Durch die Angabe von DEFAULT of CURRENT_TIMESTAMP aktualisiert MySQL die Spalte nicht mehr automatisch. Aus dem MySQL Manual :

Mit einer DEFAULT CURRENT_TIMESTAMP-Klausel und keiner ON UPDATE-Klausel hat die Spalte den aktuellen Zeitstempel für ihren Standardwert, wird jedoch nicht automatisch aktualisiert.

83
jonstjohn

Sie können AFAIK nicht standardmäßig mit Funktionen wie NOW () verwenden.

Versuchen

ALTER TABLE `mytable` CHANGE `time` `time` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP

(Bearbeitet, um das Entweichen und die zweite Verwendung des Feldnamens hinzuzufügen.)

11
Pete