2016-03-25 17 views
0

tabanlı Ben Değerini değiştirme için bir ASP.NET C# formda güncelleme işlemi tetiklediği aşağıdaki SQL güncelleştirme sorgusu ..Güncelleme ek satır parametre değişikliği değeri SQL 2012 ASP.NET

UPDATE 
[Data_TEST] SET 
[Contact Phone] = @Contact_Phone 
, [Contact] = @Contact 
, [Contact Info Changed] = @Contact_Info_Changed 

WHERE 
(([Contact Phone] = @original_Contact_Phone) OR 
([Contact Phone] IS NULL AND 
@original_Contact_Phone IS NULL)) AND 
(([Contact] = @original_Contact) OR 
([Contact] IS NULL AND 
@original_Contact IS NULL)) 
(([Contact Info Changed] = @original_Contact_Info_Changed) OR 
([Contact Info Changed] IS NULL AND 
@original_Contact_Info_Changed IS NULL)) 

istiyorum var [İrtibat Telefonu] VEYA [İrtibat], güncelleme işlemi sırasında değiştirilmişse, [İletişim Bilgileri] 'nin Y ile Değiştirilmesi.

u bu değerler güncellenir eğer bir tetikleyici kontrol etmek yapmak veya yapabilirsiniz
+0

Masanızda benzersiz veya birincil anahtarınız var mı? – FLICKER

cevap

0

sen belli ki sen senaryomu takip edebilirsiniz olması gerektiğini, senin ki Birincil veya benzersiz Anahtarınız varsa

IF OBJECT_ID('tempdb..#Data_TEST') IS NOT NULL 
    DROP TABLE #Data_TEST 

create table #Data_TEST 
(
    ID int, 
    [Contact Phone] varchar(10), 
    [Contact] varchar(10), 
    [Contact Info Changed] char(1) 
) 

insert into #Data_TEST values 
(1, 'Phone1', 'Contact1', 'N'), 
(2, 'Phone2', 'Contact2', 'N') 

declare @Contact_Phone varchar(10) = 'Phone2' 
declare @Contact varchar(10) = 'Contact2' 

UPDATE #Data_TEST 
SET 
    [Contact Phone] = @Contact_Phone 
, [Contact] = @Contact 
, [Contact Info Changed] = 
    case 
    when 
     @Contact = (select [Contact] from #Data_TEST AS dt2 where dt2.ID = #Data_TEST.ID) AND 
     @Contact_Phone = (select [Contact Phone] from #Data_TEST AS dt2 where dt2.ID = #Data_TEST.ID) 
    then 'N' 
    else 'Y' 
    end 

#Data_TEST olarak tablo varsayın ve farz senin pk/UK kimliği

olan bu komut şu anda ne var ile parametre değeri karşılaştırmak o yazım hatası vardı, ama son komut eklemek için hatırlamak olarak tablo

Veri güncellemeden önce

+----+---------------+----------+----------------------+ 
| ID | Contact Phone | Contact | Contact Info Changed | 
+----+---------------+----------+----------------------+ 
| 1 | Phone1  | Contact1 | N     | 
| 2 | Phone2  | Contact2 | N     | 
+----+---------------+----------+----------------------+ 

Veri güncelleme

+----+---------------+----------+----------------------+ 
| ID | Contact Phone | Contact | Contact Info Changed | 
+----+---------------+----------+----------------------+ 
| 1 | Phone2  | Contact2 | Y     | 
| 2 | Phone2  | Contact2 | N     | 
+----+---------------+----------+----------------------+ 

sonra senin nerede maddesini kaldırıldı.

+0

@CharlesPhillips, ne demek istiyorsun, cevabım açık değil mi? – FLICKER

0

değil yüzden

create trigger trg_change on Data_Test 
    after update 
    as 
begin 
if(select [Contact Phone] from deleted)!=(select [Contact Phone] from inserted) 
or (select Contact from deleted)!=(select Contact from inserted) 
begin 
update Data_Test 
set 
[Contact Info Changed]='y' 
end 
end