首页 > 解决方案 > 在创建表时将默认值作为 Mysql 中两列的差异

问题描述

我们可以在 Mysql 服务器中创建一个表,其中一列作为其他两列之间的差异。因此,当填充这两列时,将从它们计算第三列。

CREATE TABLE LOAD(
START_TIME DATETIME,
END_TIME DATETIME,
ELAPSED_TIME DATETIME AS START_TIME-END_TIME
)

像这样的东西

标签: mysqlgenerated-columns

解决方案


MySQL 8 确实支持生成的列。因此,要生成一个在列和elapsed_time之间传递秒数的列,您可以使用如下:start_timeend_timetimestampdiff()

CREATE TABLE `load`
             (start_time datetime,
              end_time datetime,
              elapsed_time integer AS (timestampdiff(SECOND, start_time, end_time)));

(注意这load是一个保留字,因此在用作标识符时需要用反引号括起来。)
db<>fiddle


推荐阅读