如何根据自动插入的DATE_1列自动填充DATE_2为其6个月后时间戳?
实现DATE_2自动填充为DATE_1后6个月的方案
当然可行!根据你使用的数据库类型,有几种不同的落地方式,下面是主流数据库的具体操作方法:
MySQL/MariaDB
- 最直接的方式是用生成列(Generated Column),创建表时直接定义DATE_2为依赖DATE_1的计算列:
CREATE TABLE your_table_name ( ID INT PRIMARY KEY AUTO_INCREMENT, DATE_1 TIMESTAMP DEFAULT CURRENT_TIMESTAMP, DATE_2 DATE AS (DATE_ADD(DATE_1, INTERVAL 6 MONTH)) STORED );
- 小说明:
STORED表示这个值会被实际存储在表中,每次DATE_1更新时DATE_2会自动同步;如果选VIRTUAL则是查询时实时计算,根据你的需求选STORED更贴合自动填充的预期。
PostgreSQL
- PostgreSQL同样支持生成列,推荐用
GENERATED ALWAYS来确保列值只能由系统计算,避免手动修改:
CREATE TABLE your_table_name ( ID SERIAL PRIMARY KEY, DATE_1 TIMESTAMP DEFAULT CURRENT_TIMESTAMP, DATE_2 DATE GENERATED ALWAYS AS (DATE_1 + INTERVAL '6 months') STORED );
SQL Server
- SQL Server通过计算列实现,搭配
PERSISTED关键字存储计算结果:
CREATE TABLE your_table_name ( ID INT PRIMARY KEY IDENTITY(1,1), DATE_1 DATETIME DEFAULT GETDATE(), DATE_2 AS DATEADD(MONTH, 6, DATE_1) PERSISTED );
针对已存在的表
如果你的表已经创建好了,也可以通过修改表结构添加这个自动计算列,比如MySQL的示例:
ALTER TABLE your_table_name ADD COLUMN DATE_2 DATE AS (DATE_ADD(DATE_1, INTERVAL 6 MONTH)) STORED;
内容的提问来源于stack exchange,提问作者Peter
相关产品推荐
相关产品推荐

