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

发布于 2024-08-23 10:24:54 字数 489 浏览 7 评论 0原文

我有一个表 Cars 和 CarDescriptions

汽车:IDCar(int, PK, 自动增量) 汽车描述(ID描述, 标头(nvarchar),内容(nvarchar),idCar(int,FK)

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

我的问题:

1.如何在数据库中保存更改后的汽车及其描述?

我有汽车的 ID,并且有描述

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

我不想执行以下操作:

  1. 从 carsdescriptions 中删除,其中 idcar=@idcar
  2. 插入到 cardescriptions (, @Header,@内容,@IDCar)

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

I have a tables Cars and CarDescriptions

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

In application I am adding cars and editing existing ones.

My problems:

1.How to save changed Car with descriptions in database ??

I have ID of Car, and I have ID's of Descriptions

Class CarDescirption doesn't have any pool like IsChanged, so

I don't wanna do something like :

  1. delete from carsdescriptions where idcar=@idcar
  2. insert into cardescriptions (, @Header,@Content,@IDCar)

the record must be updated if is in table, and inserted if doesn't exist in table

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(5

榆西 2024-08-30 10:24:54

它具有最佳的性能:

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

It has the best perfomacne:

UPDATE Table1 SET (...) WHERE Column1='SomeValue'
IF @@ROWCOUNT=0
    INSERT INTO Table1 VALUES (...)
你如我软肋 2024-08-30 10:24:54

在 SqlServer 2008 中,有 UPSERT 命令 正是执行此操作。我没试过。

In SqlServer 2008 there is an UPSERT command which does exactly this. I didn't try it.

强辩 2024-08-30 10:24:54

可能类似的东西经过一些修改就可以工作

   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)

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

probably something similar with some modification would work

   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)

Have a look at this article as well, will give you more insight

全部不再 2024-08-30 10:24:54

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

You'll want to do a IF EXISTS first to see if the record exists in the table. If it doesn't, INSERT the new car, else UPDATE the existing record.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文