default datetime MySQL Server


MySQL tidak memperbolehkan nilai default berupa fungsi maupun ekspresi, namun memperbolehkan konstan. Jadi kita tidak dapat menggunakan default Now() atau curdate().
Untuk itu terdapat tipe data Timestamp. Timestamp memiliki range antara 1 januari 1970 sampai 19 januari 2038 (? baca MySQL Reference Manual). Tidak tahu bagaimana kelanjutan setelah 19 Januari 2038, mungkin sitemnya sudah berubah.
Inisialisasi
create table plays (id int primary key auto_increment, play_time timestamp default current_timestamp);
query di atas akan membuat table dengan kolom play_time bernilai tanggal dan waktu pembuatan record/baris. Nilai tersebut tidak berubah karena perubahan kolom lain (update).
Update
Agar nilai timestamp berubah pada saat update kolom lain, maka digunakan syntax default current_timestamp on update current_timestamp
alter table plays modify column play_time default current_timestamp on update current_timestamp;
Tidak diperkenankan dalam satu table memiliki 2 kolom dengan tipe timestamp dengan sifat default. Agar memiliki dua kolom timestamp dengan sifat default saat inisialisasi dan default saat update maka nilai kolom yang ingin diupdate saat update di supply dari query, sedangkan defaultnya di isi 0.
alter table plays add column update_play_time default 0 after play_time;

update plays set update_play_time=curdate();

About abunajiyah
A Programmer

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

%d bloggers like this: