【问题标题】:Perform Calculation after table has updated表更新后执行计算
【发布时间】:2021-12-10 19:51:30
【问题描述】:

我正在开发一个我给自己的 phpmysql 项目,以了解更多关于查询的信息。 我添加了一个名为 CALCULATION 的新列。

我想做的是一旦数据库更新,就会执行计算。该计算将是:

音量 *(高 - 低)

并且该值将出现在 CALCULATION 列下的相应行中。

因此,以 AAL 为例,从发布的屏幕截图中:

24847975 * (20.02 - 19.36) = 16399663.50(将出现在 AAL 的 CALCULATION 列下。

所以表每天都会更新,然后当它更新时,我想对其执行计算。我正在考虑可能是触发器的想法,但希望得到一些指导。

如果行内没有任何内容,则仅执行此计算会很有用,因为重新计算所有内容会浪费资源。

【问题讨论】:

    标签: sql calculation


    【解决方案1】:

    我建议创建一个包含 HIGH * LOW 聚合的计算列的视图。类似于以下内容:

    CREATE VIEW [viewName] AS
    SELECT (high*low) as calculation
    FROM tableName
    

    【讨论】:

      【解决方案2】:

      触发器可以满足您的需求!它们允许在对单行进行操作之后执行操作。您可以在表上定义 INSERT 触发器和 UPDATE 触发器(它们可以在操作之前或之后执行)

      当您执行 INSERT(或 UPDATE)时,触发器可以计算值并将其放入您的列中。

      另一个更简单的解决方案是在完成表更新后执行另一个更新查询。

      【讨论】:

        【解决方案3】:

        有一个生成的列

        create table ...
        (
            ...
            calculation float GENERATED ALWAYS AS (VOLUME * (HIGH - LOW)),
            ...
        )
        

        (如果你愿意,你可以选择其他数据类型,我对 MySQL 不是很了解......)

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2018-02-27
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2015-10-29
          • 2012-11-24
          • 2019-06-18
          • 1970-01-01
          相关资源
          最近更新 更多