insert不支持as of timestamp 查询历史数据的限制是啥

mysql>
insert into TF_D_AFTER_test select * from TF_D_AFTER as of timestamp ‘2025-03-21 16:00:48’ limit 10;
ERROR 8135 (HY000): can not set different time in the as of

查询历史数据不支持直接insert到另一张表,是因为有哪些限制。

该操作受限核心是 TiDB 读取历史数据(AS OF TIMESTAMP)与写入操作的事务隔离机制冲突,具体限制有 3 点:

  1. 历史读事务为 “快照读”,仅支持查询,无法发起写入操作,而 INSERT … SELECT 本质是 “读 + 写” 组合操作,违反该限制。
  2. 历史数据版本与当前表的最新数据版本无法在同一事务中兼容,强制写入会破坏数据一致性,导致版本混乱。
  3. TiDB 对 AS OF TIMESTAMP 语法的设计场景仅为 “数据查询回溯”,未开放其与 DML(数据操纵)语句的结合能力。

不支持这个操作,可以换个思路,用dumpling导出数据可以带时间戳查快照,可以带where条件,然后再导入

查出来目的肯定是需要写到另一个地方,我觉得这个设计可以优化

导出查询结果,然后自己再导入到空表里,或者直接导出SQL语句,太多记录就是麻烦了