SQL Server触发器根据导入时的文件名填写值
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了SQL Server触发器根据导入时的文件名填写值相关的知识,希望对你有一定的参考价值。
我需要创建一个触发器,根据文件名填写表的项目名称。目前,我可以根据第一个主机名填写导入时的第一个项目名称。
当前导入后的示例:
现在我需要填写Null项目名称的其余部分,其中项目名称对于相应的文件名是非空的。
目标导入示例
如何在每次输入新数据时动态地使其工作?我还想确保它是由文件名完成的,以确保没有更新其他数据集。
答案
下面是一个示例触发器。如果对于具有非null ProjectName的同一文件存在多个行,则使用HostName作为平局。插入文件的所有行都将更新为HostName排序的第一个非null ProjectName。
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
以上是关于SQL Server触发器根据导入时的文件名填写值的主要内容,如果未能解决你的问题,请参考以下文章
sql server 数据库里设置了当插入数据时,便触发器插入更新时间,但我导入数据时,触发器却没有工作。