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

时间:2010-03-02 11:19:37

标签: c# sql sql-server-2005 sql-update

我有一张桌子汽车和CarDescriptions

  

汽车:IDCar(int,PK,autoincrement)   carsDesciptions(IDDescription,   报头(nvarchar的),内容(NVARCHAR),idCar(INT,FK)

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

我的问题:

1.如何保存已更改的Car以及数据库中的描述?

我有Car的ID,我有ID的描述

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

我不想做类似的事情:

  1. 从iddes = @ idcar
  2. 的carsdescriptions中删除
  3. 插入cardescriptions(,@ Header,@ Content,@ IDCar)
  4. 如果在表中,则必须更新记录,如果表

    中不存在则必须插入

5 个答案:

答案 0 :(得分:12)

它具有最好的性能:

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

答案 1 :(得分:7)

在SqlServer 2008中,an UPSERT command就是这样做的。我没试过。

答案 2 :(得分: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)

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

答案 3 :(得分:0)

您首先要进行IF EXISTS以查看表中是否存在记录。如果没有,请插入新车,否则更新现有记录。

答案 4 :(得分:-1)