在 SQL 服务器中添加两列值以填充第三列,这可以在没有 trigger/stored 过程的情况下完成吗?

Adding two column values in SQL Server to populate a third column, can this be done without a trigger/stored procedure?

关于这个我有一个非常具体的问题。我知道我可以使用 SUM 对两列的值求和,但是,除了 运行 基本查询之外,还有一些其他要求需要处理。

  1. 第三列需要出现在 table 中,它将包含两列的值。

  2. 每当创建一行或更新其他列中的两个值中的任何一个时,都需要更新第三列。

是否可以通过在列中设置默认值来完成此操作,并在其他两列中的任何一个更新时使用某种引用进行更新?那将是最简单的解决方案。或者,我是否需要一个 trigger/stored 过程组合,只要创建一行或更新这两列之一,它就会触发并 运行 ?如果是这样,我将如何实施?

这是table创作:

CREATE TABLE [dbo].[haems_callLog]
(
    [month] [int] NOT NULL,
    [year] [int] NOT NULL,
    [total] [int] NOT NULL CONSTRAINT [DF_haems_callLog_total]  DEFAULT ((0)),
    [station] [nvarchar](4) NOT NULL CONSTRAINT [DF_haems_callLog_station]  DEFAULT (N'-'),
    [station1_Total] [int] NOT NULL CONSTRAINT [DF_haems_callLog_station1_total]  DEFAULT ((0)),
    [station2_Total] [int] NOT NULL CONSTRAINT [DF_haems_callLog_station2_total]  DEFAULT ((0))
) ON [PRIMARY]

总字段默认为“0”。在创建记录时,只有月、年、站以及 station1_Totalstation2_Total 列将被提供数据。然后,总计列需要采用 station1_Totalstation2_Total 的值,并且除了另一列的“0”默认值外,还需要用总和值填充。

更新记录时,这两列中的任何一列都可能发生变化,然后需要反映在总计列的总和值中。

在此先感谢您的帮助和指导!

只需像这样定义一个计算列

ALTER TABLE [dbo].[haems_callLog]
ADD GrandTotal AS [station1_Total] + [station2_Total] PERSISTED

这将添加一个新列,该列将始终反映其他两列的总和 - 无论这些列包含什么。如果两个基础列中的任何一个更新,这个新的计算列将始终更新。