Sql server SQL Server触发器在导入时基于文件名填充值

Sql server SQL Server触发器在导入时基于文件名填充值,sql-server,dynamic,triggers,insert-update,Sql Server,Dynamic,Triggers,Insert Update,我需要创建一个触发器,根据文件名为表填充项目名称。目前,我能够根据第一个主机名在导入时填写第一个项目名称 当前导入后的示例: 现在我需要填写其余的空项目名称,其中对应文件名的项目名称不为空 目标导入示例 如何在每次输入新数据时使其动态工作? 我还想确保它是按文件名完成的,以确保没有其他数据集被更新。下面是一个示例触发器。如果同一文件中存在多行且项目名不为null,则会将主机名用作断开连接的条件。插入文件的所有行将更新为按主机名排序的第一个非空项目名 CREATE TABLE dbo.FooB

我需要创建一个触发器,根据文件名为表填充项目名称。目前,我能够根据第一个主机名在导入时填写第一个项目名称

当前导入后的示例:

现在我需要填写其余的空项目名称,其中对应文件名的项目名称不为空

目标导入示例

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

下面是一个示例触发器。如果同一文件中存在多行且项目名不为null,则会将主机名用作断开连接的条件。插入文件的所有行将更新为按主机名排序的第一个非空项目名

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