有关数据库建表的一个问题,感觉很头疼 直接上图

建表的语句

create table meeting(
meetingid int primary key,
roomid int,
userid int,
theme varchar(20),
startdate timestamp,
record varchar(400),
enddate timestamp,
foreign key(roomid) references meetindroom(roomid),
foreign key(userid) references zhq_users(uid)
);

数据库是mysql
然后 desc meeting 表的结构 结果却是 请看图

每次我更新meeting表的记录的时候,我只是更改记录的roomid 。但是每次已更新,这个startdate列也会随着更新, 直接是当前系统的时间,我的sql语句是
update meeting set roomid=-1 where roomid=? and startdate >?
第一个问号赋值用的是传递过来的参数,第二个问号赋值是用的当前系统的时间,意思就是说 把roomid等于某一个数并且startdate大于当前系统时间的那一条记录的roomid改成-1.
很纠结 一直没有找出来到底是哪里错了

自动更新的原因是mysql的建表语句中,对于第一个timestamp字段默认会自动更新的,也就是你图中看到的on update CURRENT_TIMESTAMP.

到MySql手册中可以看到具体的描述:http://dev.mysql.com/doc/refman/5.1/en/timestamp-initialization.html

建议创建timestamp字段的时候,都显示的声明一下是否自动更新及是否使用默认值:

自动初始化和更新:
ts TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP

只自动初始化:
ts TIMESTAMP DEFAULT CURRENT_TIMESTAMP

只自动更新
ts TIMESTAMP DEFAULT 0 ON UPDATE CURRENT_TIMESTAMP

只是给一个常量(注:0000-00-00 00:00:00)
ts TIMESTAMP DEFAULT 0

从你的需求看,应该是只需要自动初始化。