sql >> Databasteknik >  >> RDS >> Mysql

Mysql datetime DEFAULT CURRENT_TIMESTAMP-fel

DEFAULT CURRENT_TIMESTAMP stöd för en DATETIME (datatyp) lades till i MySQL 5.6.

I 5.5 och tidigare versioner gällde detta endast TIMESTAMP (datatyp) kolumner.

Det är möjligt att använda en BEFORE INSERT trigger i 5.5 för att tilldela ett standardvärde till en kolumn.

 DELIMITER $$

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

Skiftlägeskänslighet (av frågor mot värden lagrade i kolumner) beror på collation används för kolumnen. Sorteringar som slutar på _ci är skiftlägesokänsliga. Till exempel latin1_swedish_ci är skiftlägesokänslig, men latin1_general_cs är skiftlägeskänslig.

Utdata från SHOW CREATE TABLE foo kommer att visa teckenuppsättningen och sorteringen för teckentypskolumnerna. Detta anges på kolumnnivå. "Standard" som anges på tabellnivå gäller för nya kolumner som läggs till i tabellen när den nya kolumndefinitionen inte anger en teckenuppsättning.

UPPDATERA

Kaii påpekade att mitt svar angående "skiftlägeskänslighet" handlar om värden lagrade i kolumner, och om frågor kommer att returnera ett värde från en kolumn som innehåller värdet "New" kommer att returneras med ett predikat som "t.col = 'new'" .

Se Kaiis svar angående identifierare (t.ex. tabellnamn) hanteras annorlunda (som standard) på Windows än på Linux.



  1. Katastrofåterställningsalternativ för PostgreSQL distribueras till ett hybridmoln

  2. MySqlCommand().ExecuteReader().GetString() fungerar inte

  3. Rails Migrations:försökte ändra kolumntypen från sträng till heltal

  4. Hur bibehåller man utländska nyckelbegränsningar i olika databaser?