Inserisci o aggiorna se il record è nella tabella

Ho un tavolo Cars e CarDescriptions

auto: IDCar (int, PK, autoincrement) carsDesciptions (IDDescription, Header (nvarchar), Content (nvarchar), idCar (int, FK)

Nell’applicazione sto aggiungendo macchine e modificando quelle esistenti.

I miei problemi:

1. Come salvare l’auto modificata con le descrizioni nel database ??

Ho l’ID della macchina e ho le descrizioni delle ID

Class CarDescirption non ha alcun pool come IsChanged, quindi

Non voglio fare qualcosa come:

  1. elimina da carsdescriptions dove idcar = @ idcar
  2. inserisci in cardescriptions (, @ Header, @ Content, @ IDCar)

il record deve essere aggiornato se è nella tabella e inserito se non esiste nella tabella

    Ha le migliori perfomacne:

    UPDATE Table1 SET (...) WHERE Column1='SomeValue' IF @@ROWCOUNT=0 INSERT INTO Table1 VALUES (...) 

    In SqlServer 2008 c’è un comando UPSERT che fa esattamente questo. Non l’ho provato

    probabilmente qualcosa di simile con qualche modifica funzionerebbe

      IF EXISTS (SELECt * FORM carsdescriptions WHERE IDCar = @IDCar ) UPDATE carsdescriptions SET Header = @Header, Content = @Content WHERE IDCar = @IDCar ELSE INSERT INTO carsdescriptions (IDCar, Header, Content) VALUES (@IDCar, @Header, @Content) 

    Date un’occhiata anche a questo articolo, vi forniremo ulteriori informazioni

    • SQL Server: il modo migliore per aggiornare la riga se esiste, Inserisci se non

    Prima dovrai fare un IF EXISTS per vedere se il record esiste nella tabella. In caso contrario, INSERIRE la nuova auto, altrimenti AGGIORNA il record esistente.