如何从表中获取更新列?

时间:2016-07-01 07:05:10

标签: sql-server

我正在使用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的名称列,因为它已更新。

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