SQL 服务器触发器根据导入时的文件名填写值

SQL Server Trigger to fill in value based off File Name on Import

我需要创建一个触发器,根据文件名为 table 填写项目名称。目前,我可以根据第一个主机名填写导入时的第一个项目名称。

当前导入后的示例:

现在我需要填写其余的Null Project Names,其中Project name is Not Null for the corresponding Filename。

目标导入示例

每次输入新数据时如何让它动态工作? 我还想确保它是通过文件名完成的,以确保没有更新其他数据集。

下面是一个触发器示例。如果具有非空 ProjectName 的同一文件存在多行,这将使用 HostName 作为决胜局。插入文件的所有行都将更新为按主机名排序的第一个非空项目名称。

CREATE TABLE dbo.FooBar (
      FileName varchar(100) NOT NULL
    , ProjectName varchar(100) NULL
    , HostName varchar(100) NOT NULL
      CONSTRAINT PK_FooBar PRIMARY KEY CLUSTERED (FileName, HostName)
    );
GO
CREATE TRIGGER TR_FooBar 
ON dbo.FooBar 
FOR INSERT
AS
UPDATE dbo.FooBar
SET ProjectName = (
    SELECT TOP(1) ProjectName
    FROM dbo.FooBar AS source
    WHERE
        source.FileName = inserted.FileName
        AND source.ProjectName IS NOT NULL
    ORDER BY HostName
    )
FROM inserted
WHERE
    inserted.FileName = FooBar.FileName;
GO