Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/67.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
MySql触发器插入时间戳错误的新条目_Mysql_Triggers - Fatal编程技术网

MySql触发器插入时间戳错误的新条目

MySql触发器插入时间戳错误的新条目,mysql,triggers,Mysql,Triggers,我有一个版本为5.0.95的旧数据库(很遗憾,我无法升级) 在这个数据库中,我有一个表clients\u states: CREATE TABLE `clientes_states` ( `id` int(11) NOT NULL auto_increment, `client_id` int(11) NOT NULL, `state_id` int(11) NOT NULL, `date` datetime NOT NULL, PRIMARY KEY (`id`) ) E

我有一个版本为5.0.95的旧数据库(很遗憾,我无法升级)

在这个数据库中,我有一个表
clients\u states

CREATE TABLE `clientes_states` (
  `id` int(11) NOT NULL auto_increment,
  `client_id` int(11) NOT NULL,
  `state_id` int(11) NOT NULL,
  `date` datetime NOT NULL,
  PRIMARY KEY  (`id`)
) ENGINE=MyISAM AUTO_INCREMENT=1239670 DEFAULT CHARSET=latin1 ROW_FORMAT=FIXED;
对于客户端状态的每次更改,都会生成一个新条目。因此,该表非常庞大,这使得获取所有客户端的最后状态变得非常复杂

为了方便地访问每个客户端的当前状态,我创建了下表,并添加了一个触发器:

CREATE TABLE `actual_clients_states` (
  `id` int(11) NOT NULL auto_increment,
  `client_id` int(11) NOT NULL,
  `state_id` int(11) NOT NULL,
  `updated_at` timestamp NOT NULL default CURRENT_TIMESTAMP,
  PRIMARY KEY  (`id`),
  UNIQUE KEY `client_id` (`client_id`)
) ENGINE=InnoDB AUTO_INCREMENT=21022 DEFAULT CHARSET=utf8 ROW_FORMAT=COMPACT;
我有两个数据库,一个用于测试,一个用于暂存。
出于某种原因,
updated_at
字段在登台服务器上被更新为错误的日期(大约一个月前),但在测试服务器上工作正常


知道问题出在哪里吗?

出于某种原因,登台服务器上的更新日期(大约一个月前)字段被更新为错误日期。不,它只是保持不变。在列定义中添加
'ON UPDATE CURRENT\u TIMESTAMP'
选项。我猜您指的是表
实际的\u客户端状态
?当然,这是唯一一个在
列中有
updated\u的表。
CREATE TRIGGER clients_states_insert
AFTER INSERT
ON clientes_states FOR EACH ROW
  INSERT INTO actual_clients_states (client_id, state_id) 
  VALUES (new.client_id, new.state_id)
  ON DUPLICATE KEY UPDATE state_id=NEW.state_id;