houyn
houyn
`UPDATE t_human h SET h.f_human_level = 300 WHERE h.f_human_id = 5;` `SET @@tidb_read_staleness = "-60";` `SELECT * FROM t_human h WHERE h.f_human_id = 5;` `SET @@tidb_read_staleness = "";` 依次使用这4个指令,并不能得到历史数据。
那这个只能用于读取`5秒前`到`现在`的数据(有可能是最新的,也有可能是旧的),限定了结束时间是:现在,那...直接用SELECT就好了,没必要设置这个系统变量了。 然后,下边的[示例](https://docs.pingcap.com/zh/tidb/stable/tidb-read-staleness#%E7%A4%BA%E4%BE%8B)在讲的是这样读到历史数据,我按照示例SQL操作,结果和示例不同,没能读到历史记录。
这个例子真的让人看的很疑惑,而且最小规模部署也复现不出来例子。 所以,真的判断不是写反了? 历史 --- 十分钟前,写成了,十分钟前 --- 现在。 其实,我的真实需求是,如果有误操作,将数据回滚到历史的某一刻,我希望通过一个SQL来实现,而不是先读出来,再覆盖回去,`tidb_read_staleness`的功能介绍中,可以在当前会话进行插入修改数据的操作,这是我需要的。 ``` UPDATE t_human t, ( SELECT h.f_human_level FROM t_human h AS OF TIMESTAMP '2022-07-19 19:55:00' WHERE h.f_human_id = 5 ) AS x...