Is it possible to insert php time() value by default in a column of a MYSQL database?
my simple question is .. Is it possible to insert php time()
value by default in a column of a MYSQL database s开发者_StackOverflow社区o that everytime i don't need to insert it. I know MYSQL provide CURR_TIMESTAMP
..but they are not stored as integer unlike the time function which gives the timestamp as integer..
Any help will be greatly appreciated... Thanks
Example:
drop table if exists file_events;
create table file_events (
id int unsigned auto_increment not null,
file_id int unsigned not null,
event_time int unsigned not null default UNIX_TIMESTAMP(), # the field that defaults to "now"
primary key(id),
constraint foreign key fk_file_events_to_sam_files (file_id) references files(id) on delete cascade
) ENGINE=InnoDB;
If you want to do it on a mysql bases you can always use triggers [ http://dev.mysql.com/doc/refman/5.1/en/create-trigger.html ] just create a trigger to set the column of your choice to the current timestamp
You should just stick with the MySQL timestamp and convert it as needed. It is easy to do...
strtotime("put the mysql timestamp here");
will produce the same format (unix timestamp) as
time();
Unlike many other DBMS, MySQL doesn't support functions as default values. The only exception is the one you mention: dates accept CURRENT_TIMESTAMP
(or one of their values). It appears to me that's quite an acceptable solution anyway since you can easily convert your Unix timestamp on-the-fly:
SELECT foo_id, foo_info
FROM foo
WHERE FROM_UNIXTIME(1294133369)<=foo_date
Or, from PHP:
$sql = "SELECT foo_id, foo_info
FROM foo
WHERE '" . date('Y-m-d H:i:s', 1294133369) . "')<=foo_date";
Whatever, if you absolutely need to store dates as integers, you must write your own triggers. Here's a nice example:
http://mysqldatabaseadministration.blogspot.com/2006/01/playing-with-triggers.html
精彩评论