2016-07-01 11 views
0

Ich arbeite mit SQL Server Triggern. Und ich brauche eine SQL-Abfrage, um Spalten aus einer Tabelle zu finden, deren Werte mit INSERTED- und DELETED-Tabellen aktualisiert wurden.Wie bekomme ich aktualisierte Spalten aus einer Tabelle?

Kann mir jemand dabei helfen? Für ex -

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 
) 

Ich habe versucht, durch "EXCEPT" herauszufinden, aber es gibt ganze aktualisierte Zeile zurück. Und ich brauche nur aktualisierte Spalten wie im obigen Beispiel Ich brauche nur

Name Spalte für ID = 1, weil es aktualisiert wird.

+0

Können Sie ein Beispiel von dem, was Sie vorher versucht haben, veröffentlichen? – Padhraic

+0

Zu welchem ​​Zweck? Sie werden diese Tabellen nach dem Einfügen/Löschen abgeschlossen oder INSTEAD verwenden? – gofr1

Antwort

0

Sie müssen nur für einzelne Spalten tun und dann Union tun.

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 
+0

danke. Ja, wir können es durch obigen Code erreichen. Aber im Falle einer großen Anzahl von Spalten wie 100, 120 usw. müssen wir mehr Anweisungen schreiben. Gibt es einen anderen Weg, es zu finden? – GreenSoft

Verwandte Themen