MySQL:使用更新时更新条目而不更新时间戳。。。参加

MySQL:使用更新时更新条目而不更新时间戳。。。参加,mysql,Mysql,我有一张像这样的桌子 create table test ( id int, a int, mtime TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, ); 在正常情况下,我修改记录时需要mtime自动更新。但有时我需要保持时间不变 这是一本书。从中,我得到我需要的是这句话: update table test set a = 3, mtime = mtime; 它几乎

我有一张像这样的桌子

create table test (
    id int,
    a int,
    mtime TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
);
在正常情况下,我修改记录时需要mtime自动更新。但有时我需要保持时间不变

这是一本书。从中,我得到我需要的是这句话:

update table test set a = 3, mtime = mtime;
它几乎完美地工作,除了一种情况:更新。。。加入…。比如说,

UPDATE test
JOIN
    (select test.id from test
    JOIN middle on middle.test_id = test.id
    JOIN test_2 on middle.test_2_id = test_2.id
    WHERE test_2.id = 3) tmp
ON test.id = tmp.id
SET test.a = 4, test.mtime = test.mtime
它准确地改变了表测试中的mtime。那么,我该怎么办呢

-------------编辑----------- 它也不起作用:

update test
join middle on test.id = middle.test_id
join test2 on test2.id = middle.test2.id
set test.a = 3, test.mtime = test.mtime
where test2.id = test2.id + 4;      -- after test, set tset2.id = 4 works,

如果只需要偶尔更新,则不要默认该值。相反,当你想更新它的时候就更新它。这将是一个bug。你的MySQL版本是什么?如果是当前MySQL版本,请发送错误报告。您可以解决此问题,例如,在第一次加入查询中,将
mtime
添加到子查询的选择列表中,并设置
mtime=tmp.mtime