Mysql
 sql >> Database >  >> RDS >> Mysql

Errore mysql datetime DEFAULT CURRENT_TIMESTAMP

Il DEFAULT CURRENT_TIMESTAMP supporto per un DATETIME (tipo di dati) è stato aggiunto in MySQL 5.6.

Nelle versioni 5.5 e precedenti, ciò si applicava solo a TIMESTAMP colonne (tipo di dati).

È possibile utilizzare un BEFORE INSERT attivare in 5.5 per assegnare un valore predefinito a una colonna.

 DELIMITER $$

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

La distinzione tra maiuscole e minuscole (delle query rispetto ai valori archiviati nelle colonne) è dovuta al collation utilizzato per la colonna. Collazioni che terminano con _ci non fanno distinzione tra maiuscole e minuscole. Ad esempio latin1_swedish_ci non fa distinzione tra maiuscole e minuscole, ma latin1_general_cs fa distinzione tra maiuscole e minuscole.

L'output di SHOW CREATE TABLE foo mostrerà il set di caratteri e le regole di confronto per le colonne del tipo di carattere. Questo è specificato a livello di colonna. Il "predefinito" specificato a livello di tabella si applica alle nuove colonne aggiunte alla tabella quando la nuova definizione di colonna non specifica un set di caratteri.

AGGIORNAMENTO

Kaii ha sottolineato che la mia risposta in merito alla "sensibilità tra maiuscole e minuscole" riguarda i valori archiviati all'interno delle colonne e se le query restituiranno un valore da una colonna contenente un valore di "New" verrà restituito con un predicato come "t.col = 'new'" .

Vedi la risposta di Kaii sugli identificatori (ad es. i nomi delle tabelle) vengono gestiti in modo diverso (per impostazione predefinita) su Windows rispetto a Linux.