如果记录在表中,则插入或更新

use*_*618 8 c# sql sql-server-2005 sql-update

我有一张桌子汽车和CarDescriptions

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

在应用程序中,我正在添加汽车并编辑现有汽车.

我的问题:

1.如何保存更改的汽车与数据库中的描述?

我有车的ID,我有ID的描述

类CarDescirption没有像IsChanged这样的任何池,所以

我不想做这样的事情:

  1. 从iddes = @ idcar的carsdescriptions中删除
  2. 插入cardescriptions(,@ Header,@ Content,@ IDCar)

如果在表中,则必须更新记录,如果表中不存在则必须插入

use*_*618 12

它具有最好的性能:

UPDATE Table1 SET (...) WHERE Column1='SomeValue'
IF @@ROWCOUNT=0
    INSERT INTO Table1 VALUES (...)
Run Code Online (Sandbox Code Playgroud)


Ste*_*ger 7

在SqlServer 2008中有一个UPSERT命令就是这样做的.我没试过.


Asa*_*sad 5

可能类似于某些修改的东西会起作用

   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)
Run Code Online (Sandbox Code Playgroud)

看看这篇文章,也会给你更多的见解