password_expire_date
datetime NOT NULL DEFAULT ((now() + interval 90 day)) COMMENT ‘密码过期时间’,
类似这种建表语句,create table t11(id int, password_expire_date
datetime NOT NULL DEFAULT (now() , interval 90 day)) ;
tidb默认值不支持使用函数的,不行就用虚拟列吧,类似这样,
CREATE TABLE t11 (
id INT,
created_at DATETIME DEFAULT CURRENT_TIMESTAMP,
password_expire_date DATETIME AS (DATE_ADD(created_at, INTERVAL 90 DAY)) – 生成列
);
2 个赞
你这个写法是哪里来的
TiDB 是按兼容 Mysql 做的,看起来 TiDB 和 Mysql 都不支持
https://docs.pingcap.com/zh/tidb/stable/data-type-default-values/#数据类型的默认值
https://dev.mysql.com/doc/refman/8.4/en/timestamp-initialization.html
查了下 mysql5.7和mysql8.0 都有这个用法
create_time >= DATE_SUB(CURDATE(),INTERVAL 90 DAY)
TiDB好像没有
大部分语法都支持,到那时函数支持的比较少。刚好你遇到一个
mysql 5.7和8.0都不支持这种建表语句的
这个是不支持