【问题标题】:Insert or update if record is in table如果记录在表中,则插入或更新
【发布时间】:2010-03-02 11:19:37
【问题描述】:

我有一个表格 Cars 和 CarDescriptions

汽车:IDCar(int, PK, autoincrement) 汽车说明(IDDescription, 标题(nvarchar),内容(nvarchar),idCar(int,FK)

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

我的问题:

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

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

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

我不想做类似的事情:

  1. 从 idcar=@idcar 的汽车描述中删除
  2. 插入卡片描述(、@Header、@Content、@IDCar)

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

【问题讨论】:

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


    【解决方案1】:

    它有最好的性能:

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

    【讨论】:

      【解决方案2】:

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

      【讨论】:

        【解决方案3】:

        类似的修改可能会起作用

           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)
        

        也可以看看这篇文章,让你更深入地了解

        【讨论】:

          【解决方案4】:

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

          【讨论】:

            【解决方案5】:

            【讨论】:

            • 这绝对不是一个非常具体的问题答案。
            • 然后删除这个否则它的噪音
            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2016-01-13
            • 1970-01-01
            • 2010-12-10
            • 2019-06-23
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多