sql >> Database >  >> RDS >> Mysql

Mysql datetime DEFAULT CURRENT_TIMESTAMP fout

De DEFAULT CURRENT_TIMESTAMP ondersteuning voor een DATETIME (datatype) is toegevoegd in MySQL 5.6.

In 5.5 en eerdere versies was dit alleen van toepassing op TIMESTAMP (gegevenstype) kolommen.

Het is mogelijk om een ​​BEFORE INSERT . te gebruiken trigger in 5.5 om een ​​standaardwaarde aan een kolom toe te wijzen.

 DELIMITER $$

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

Hoofdlettergevoeligheid (van zoekopdrachten tegen waarden die zijn opgeslagen in kolommen) is te wijten aan de collation gebruikt voor de kolom. Collaties die eindigen op _ci zijn hoofdletterongevoelig. Bijvoorbeeld latin1_swedish_ci is niet hoofdlettergevoelig, maar latin1_general_cs is hoofdlettergevoelig.

De uitvoer van SHOW CREATE TABLE foo toont de tekenset en sortering voor de kolommen van het tekentype. Dit wordt per kolom gespecificeerd. De "standaard" die is opgegeven op tabelniveau is van toepassing op nieuwe kolommen die aan de tabel worden toegevoegd wanneer de nieuwe kolomdefinitie geen tekenset specificeert.

UPDATE

Kaii wees erop dat mijn antwoord met betrekking tot "hoofdlettergevoeligheid" betrekking heeft op waarden die zijn opgeslagen in kolommen, en of zoekopdrachten een waarde zullen retourneren uit een kolom met de waarde "New" wordt geretourneerd met een predikaat zoals "t.col = 'new'" .

Zie Kaii's antwoord met betrekking tot identifiers (bijv. tabelnamen) worden anders (standaard) behandeld op Windows dan op Linux.



  1. Somwaarden van een enkele rij?

  2. Hoe verander ik het VARCHAR-type in DATETIME met ALTER in MySQL?

  3. Betekenis van Selecteer tabellen weg geoptimaliseerd in MySQL Explain plan

  4. mysql_num_rows() verwacht dat parameter 1 resource is, boolean gegeven in