SQL 在另一个 Table 中维护相关记录的最新计数

SQL Maintain Up to Date Count of Related Records in Another Table

我有两个相关的 table。一个用于文章类别,另一个用于文章。我想维护 "Categories" table 中按类别分类的文章数。我的table如下:

类别

ID | CatName | ArticleCount
1  | Cat1    | 
2  | Cat2    | 
3  | Cat3    | 

文章

ID | CatID | ArticleName
1  | 1     | Art1
2  | 2     | Art2
3  | 3     | Art3
4  | 1     | Art4

使用 SQL,我如何在添加文章时持续更新类别 table,以便我可以按类别维护最新的文章数量?根据我提供的示例数据,我设想我的类别 table 会像这样结束:

类别(根据文章中的相关记录自动更新 ArticleCount table)

ID | CatName | ArticleCount
1  | Cat1    | 2
2  | Cat2    | 1
3  | Cat3    | 1

您可以轻松完成的一个选项是将 ArticleCount 添加为类别中的计算字段 table,它指向计算该类别文章的 UDF

CREATE FUNCTION [dbo].[fn_cnt](@CatID   INT)
RETURNS int
AS
BEGIN
    RETURN (SELECT COUNT(1) FROM Articles WHERE CatID = @CatID)
END
GO

CREATE TABLE Categories(
    [Id]        INT,
    [CatName]   [varchar](64),
    [ArticleCount]  AS ([dbo].[fn_cnt]([Id]))
)
GO

希望对您有所帮助