我希望能够根据其他两个日期时间自动更新列totalHours
。我知道我可以使用查询DATEDIFF()执行此操作,但我希望能够自动执行此操作,如果可能的话,会自动维护一个默认表达式,例如CURRENT_TIMESTAMP
和CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
创建和更新时的数据库。
(我尝试将DATEDIFF()作为表达式但不起作用,这并不奇怪)
答案 0 :(得分:1)
您应该使用VIEW
或VIRTUAL COLUMN
,因为如果您立即存储,totalHours
会使数据冗余。
CREATE ALGORITHM = UNDEFINED VIEW `tableview` AS SELECT
*,
DATE_DIFF(startEndTime, startDateTime) AS totalHours
FROM blabla
;
这样,您将totalHours
始终保持最新状态,而无需数据冗余。您可以重命名当前表(fi:到blabla_table
)并使用表的当前名称(fi:VIEW
)创建blabla
。这样,您就不必使用TABLE
更新所有查询,以便他们现在可以使用VIEW
。
totalHours DATE AS (DATE_DIFF(startEndTime, startDateTime))
请参阅http://dev.mysql.com/doc/refman/5.7/en/create-table-generated-columns.html
上的文档