BIGINT 时间戳如何设置TTL属性

【 TiDB 使用环境】生产环境
【 TiDB 版本】 V6.5.0
我想设置TTL自动删除数据,但是我的数据表里只有一个BIGINT属性的秒时间戳,我使用如下的SQL语句设置会报错,请问应该如何处理?
CREATE TABLE t2 (
id int PRIMARY KEY,
created_at BIGINT(16)
) TTL = FROM_UNIXTIME(created_at) + INTERVAL 3 MONTH;
报错信息如下:
ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your TiDB version for the right syntax to use line 4 column 23 near “(created_at) + INTERVAL 3 MONTH”

6.5感觉没招。

7.1可以和生成列一起用就好办了,弄个虚拟生成列就解决了。

https://docs.pingcap.com/zh/tidb/stable/time-to-live#ttl-和生成列

CREATE TABLE t2 (
id INT PRIMARY KEY,
created_at BIGINT(16),
expire_at TIMESTAMP AS (
FROM_UNIXTIME(created_at)
)
) TTL = expire_at + INTERVAL 3 MONTH;
这样试试

1 个赞
alter table t2 add column expire_at TIMESTAMP AS (
FROM_UNIXTIME(created_at)
);
ALTER TABLE t2 TTL = `expire_at` + INTERVAL 3 MONTH;

这个方法真不错,还可以随时添加。v7.3

升级版本试试