我正在使用SQL Server触发器。我需要一个SQL查询来查找表中的列,其值已使用INSERTED和DELETED表进行更新。
任何人都可以帮我解决这个问题吗?对于前 -
DECLARE @T1 TABLE (Name NVARCHAR(MAX), LName nvarchar(max), Address1 Nvarchar(max),id int)
DECLARE @T2 TABLE (Name NVARCHAR(MAX), LName nvarchar(max), Address1 Nvarchar(max), id int)
insert into @T1 values('Ricky','Broad','a b road',1)
insert into @T1 values('Mike','Halls','m g road',2)
insert into @T2 values('Ricky_Update','Broad','a b road',1)
insert into @T2 values('Mike','Halls','m g road',2)
;WITH ChangedData AS (
SELECT d.name , d.LName FROM @T1 d
EXCEPT
SELECT i.name , i.LName FROM @T2 i
)
我试图通过“除外”找出它,但它返回整个更新的行。我只需要更新的列,如上例所示我只需要 -
id = 1的名称列,因为它已更新。
答案 0 :(得分:0)
除了单个列,你必须做,然后做Union。
SELECT NAME
FROM (
SELECT d.NAME
FROM @T1 d
WHERE id = 1
EXCEPT
SELECT i.NAME
FROM @T2 i
WHERE id = 1
) A
UNION
SELECT LName
FROM (
SELECT d.LName
FROM @T1 d
WHERE id = 1
EXCEPT
SELECT i.LName
FROM @T2 i
WHERE id = 1
) B