jika Anda ingin waktu default harus diubah menjadi timestamp
dalam tipe data Anda,
datetime
akan menampilkan input pengguna dari tabel...
http://dev.mysql.com/doc/refman/5.0/en/timestamp-initialization.html
http://dev.mysql.com/doc/refman/5.6/en/timestamp-initialization.html
Sebagai DEFAULT CURRENT_TIMESTAMP
pertanyaan sudah dijawab, saya hanya akan menanggapi ketidaksesuaian sensitivitas huruf besar-kecil pada nama tabel antara windows dan linux.
Di Windows, sistem file secara default tidak peka huruf besar-kecil.
Namun di Linux dan *NIX lainnya seperti Sistem Operasi, mereka peka terhadap huruf besar-kecil secara default.
Alasan mengapa Anda mendapatkan ketidakcocokan dalam perilaku di sini adalah sistem file, karena setiap tabel dibuat sebagai file terpisah dan sistem file menangani sensitivitas huruf besar-kecil untuk Anda.
MySQL memiliki parameter untuk mengesampingkan perilaku ini:
Misalnya, di Unix, Anda dapat memiliki dua tabel berbeda bernama
my_table
danMY_TABLE
, tetapi pada Windows kedua nama ini dianggap identik. Untuk menghindari masalah transfer data yang timbul dari huruf huruf nama database atau tabel, Anda memiliki dua opsi:
Gunakan
lower_case_table_names=1
pada semua sistem. Kerugian utama dengan ini adalah ketika Anda menggunakanSHOW TABLES
atauSHOW DATABASES
, Anda tidak melihat nama dalam huruf aslinya.Gunakan
lower_case_table_names=0
di Unix danlower_case_table_names=2
di Windows. Ini mempertahankan huruf nama database dan tabel. Kerugiannya adalah Anda harus memastikan bahwa pernyataan Anda selalu merujuk ke nama database dan tabel Anda dengan huruf huruf yang benar di Windows. Jika Anda mentransfer pernyataan Anda ke Unix, di mana huruf itu penting, pernyataan itu tidak berfungsi jika huruf itu salah.
Pengecualian: Jika Anda menggunakan tabel InnoDB dan mencoba menghindari masalah transfer data ini, Anda harus menyetellower_case_table_names=1
pada semua platform untuk memaksa nama dikonversi menjadi huruf kecil.[...]
Untuk menghindari masalah yang disebabkan oleh perbedaan tersebut,yang terbaik adalah mengadopsi konvensi yang konsisten, seperti selalu membuat dan merujuk ke database dan tabel menggunakan nama huruf kecil . Konvensi ini direkomendasikan untuk portabilitas maksimum dan kemudahan penggunaan.
Ini adalah kutipan dari manual MySQL tentang sensitivitas huruf pengidentifikasi
DEFAULT CURRENT_TIMESTAMP
dukungan untuk DATETIME
(tipe data) telah ditambahkan di MySQL 5.6.
Di versi 5.5 dan sebelumnya, ini hanya berlaku untuk TIMESTAMP
kolom (tipe data).
Dimungkinkan untuk menggunakan BEFORE INSERT
trigger di 5.5 untuk menetapkan nilai default ke kolom.
DELIMITER $$
CREATE TRIGGER ...
BEFORE INSERT ON mytable
FOR EACH ROW
BEGIN
IF NEW.mycol IS NULL THEN
SET NEW.mycol = NOW();
END IF;
END$$
Sensitivitas huruf besar (kueri terhadap nilai yang disimpan dalam kolom) disebabkan oleh collation
digunakan untuk kolom. Kumpulan yang diakhiri dengan _ci
tidak peka huruf besar-kecil. Misalnya latin1_swedish_ci
tidak peka huruf besar/kecil, tetapi latin1_general_cs
peka huruf besar/kecil.
Keluaran dari SHOW CREATE TABLE foo
akan menampilkan kumpulan karakter dan susunan untuk kolom tipe karakter. Ini ditentukan pada tingkat per kolom. "Default" yang ditentukan di tingkat tabel berlaku untuk kolom baru yang ditambahkan ke tabel saat definisi kolom baru tidak menentukan rangkaian karakter.
PEMBARUAN
Kaii menunjukkan bahwa jawaban saya tentang "sensitivitas huruf" berkaitan dengan nilai yang disimpan dalam kolom, dan apakah kueri akan mengembalikan nilai dari kolom yang berisi nilai "New"
akan dikembalikan dengan predikat seperti "t.col = 'new'"
.
Lihat jawaban Kaii tentang pengidentifikasi (mis. nama tabel) ditangani secara berbeda (secara default) di Windows daripada di Linux.