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

8

我有两个表Cars和CarDescriptions。

Cars:IDCar(int, PK, 自增) CarDescriptions:(IDDescription, Header(nvarchar), Content(nvarchar), IDCar(int,FK))

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

我的问题:

1.如何保存已更改的带有描述的汽车到数据库中?

我有汽车的ID,以及描述的ID。

CarDescription类没有像IsChanged这样的池,因此

我不想做类似于以下的事情:

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

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

5个回答

12

它具有最佳性能:

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

7
在SqlServer 2008中有一个叫UPSERT命令可以实现这个功能。我没有尝试过。

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)

请看这篇文章,它将为您提供更多的见解


0

你需要先进行 IF EXISTS 操作,检查该记录是否存在于表中。如果不存在,则插入新的行,否则更新现有记录。


-1

这绝对不是一个非常具体的回答问题。 - Stefan Steinegger
2
然后删除这个else,它只是噪音。 - nawfal

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接