se si desidera impostare l'ora predefinita, è necessario modificarla in timestamp
nel tuo tipo di dati,
il datetime
visualizzerà l'input dell'utente della tabella...
http://dev.mysql.com/doc/refman/5.0/en/timestamp-initialization.html
http://dev.mysql.com/doc/refman/5.6/en/timestamp-initialization.html
Come il DEFAULT CURRENT_TIMESTAMP
la domanda ha già una risposta, risponderò solo alla mancata corrispondenza della distinzione tra maiuscole e minuscole nei nomi delle tabelle tra Windows e Linux.
Su Windows, i file system non fanno distinzione tra maiuscole e minuscole per impostazione predefinita.
Ma su Linux e altri sistemi operativi *NIX come i sistemi operativi, fanno distinzione tra maiuscole e minuscole per impostazione predefinita.
Il motivo per cui ottieni una discrepanza nel comportamento qui è il file system, poiché ogni tabella viene creata come un file separato e il filesystem gestisce la distinzione tra maiuscole e minuscole per te.
MySQL ha un parametro per sovrascrivere questo comportamento:
Ad esempio, su Unix, puoi avere due diverse tabelle denominate
my_table
eMY_TABLE
, ma su Windows questi due nomi sono considerati identici. Per evitare problemi di trasferimento dei dati derivanti da lettere maiuscole di database o nomi di tabelle, hai due opzioni:
Usa
lower_case_table_names=1
su tutti i sistemi. Lo svantaggio principale di questo è che quando usiSHOW TABLES
oSHOW DATABASES
, non vedi i nomi nella loro lettera maiuscola originale.Usa
lower_case_table_names=0
su Unix elower_case_table_names=2
Su Windows. Ciò preserva le lettere maiuscole dei nomi dei database e delle tabelle. Lo svantaggio di ciò è che devi assicurarti che le tue istruzioni facciano sempre riferimento ai nomi dei database e delle tabelle con la lettera corretta su Windows. Se trasferisci le tue istruzioni su Unix, dove la lettera minuscola è significativa, non funzionano se la lettera minuscola è errata.
Eccezione: Se stai usando le tabelle InnoDB e stai cercando di evitare questi problemi di trasferimento dei dati, dovresti impostarelower_case_table_names=1
su tutte le piattaforme per forzare la conversione dei nomi in lettere minuscole.[...]
Per evitare problemi causati da tali differenze,è meglio adottare una convenzione coerente, come creare e fare sempre riferimento a database e tabelle utilizzando nomi minuscoli . Questa convenzione è consigliata per la massima portabilità e facilità d'uso.
Questo è un estratto dal manuale MySQL sulla distinzione tra maiuscole e minuscole degli identificatori
Il DEFAULT CURRENT_TIMESTAMP
supporto per un DATETIME
(tipo di dati) è stato aggiunto in MySQL 5.6.
Nelle versioni 5.5 e precedenti, questo si applicava solo a TIMESTAMP
(tipo di dati) colonne.
È possibile utilizzare un BEFORE INSERT
trigger 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. Le regole di confronto 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.
AGGIORNA
Kaii ha sottolineato che la mia risposta relativa alla "sensibilità tra maiuscole e minuscole" riguarda i valori memorizzati 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 riguardo agli identificatori (ad es. i nomi delle tabelle) vengono gestiti in modo diverso (per impostazione predefinita) su Windows rispetto a Linux.