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