Search code examples
asp.netsql-server-2008sharepoint-2010

Update Additional rows based on parameter change value SQL 2012 ASP.NET


I have the following SQL update query triggered by the update process in an ASP.NET C# form..

 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))

I want to Change the Value of [Contact Info Changed] to 'Y' if [Contact Phone] OR [Contact] are changed during the update process.


Solution

  • If you have Primary or Unique Key in your that, that obviously you should have you can follow my script

    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
    

    Assume your table as #Data_TEST and assume your Pk/UK is ID

    This script compare the parameter value with what you currently have in table

    Data before update

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

    Data after update

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

    I removed your where clause as it had syntax error, but remember to add it to your final script.