Mysql
 sql >> Datenbank >  >> RDS >> Mysql

MySQL datetime DEFAULT CURRENT_TIMESTAMP-Fehler

Der DEFAULT CURRENT_TIMESTAMP Unterstützung für ein DATETIME (Datentyp) wurde in MySQL 5.6 hinzugefügt.

In 5.5 und früheren Versionen galt dies nur für TIMESTAMP (Datentyp) Spalten.

Es ist möglich, einen BEFORE INSERT zu verwenden Trigger in 5.5, um einer Spalte einen Standardwert zuzuweisen.

 DELIMITER $$

 CREATE TRIGGER ...
 BEFORE INSERT ON mytable
 FOR EACH ROW
 BEGIN
    IF NEW.mycol IS NULL THEN
       SET NEW.mycol = NOW();
    END IF;
 END$$

Groß-/Kleinschreibung (bei Abfragen für in Spalten gespeicherte Werte) liegt an der collation für die Säule verwendet. Sortierungen, die auf _ci enden Groß-/Kleinschreibung wird nicht beachtet. Zum Beispiel latin1_swedish_ci Groß-/Kleinschreibung wird nicht beachtet, aber latin1_general_cs unterscheidet zwischen Groß- und Kleinschreibung.

Die Ausgabe von SHOW CREATE TABLE foo zeigt den Zeichensatz und die Sortierung für die Zeichentypspalten an. Dies wird pro Spalte angegeben. Der auf Tabellenebene angegebene "Standard" gilt für neue Spalten, die der Tabelle hinzugefügt werden, wenn die neue Spaltendefinition keinen Zeichensatz angibt.

AKTUALISIEREN

Kaii wies darauf hin, dass sich meine Antwort zur „Groß-/Kleinschreibung“ auf Werte bezieht, die in Spalten gespeichert sind, und ob Abfragen einen Wert aus einer Spalte zurückgeben, die einen Wert von "New" enthält wird mit einem Prädikat wie "t.col = 'new'" zurückgegeben .

Siehe Kaiis Antwort zu Identifikatoren (z. B. Tabellennamen) unter Windows (standardmäßig) anders gehandhabt als unter Linux.