【问题标题】:Check for new/existing values and update in sql检查新/现有值并在 sql 中更新
【发布时间】:2013-06-07 16:58:57
【问题描述】:

我有一个 SQL 表,其项目列值为“Project1,Project2,Project3” 如果他们从 Telerik 下拉列表中选择不同的值(例如“Project4”)作为“Project1,Project2,Project3,Project4”,我需要更新此行

我从下拉列表中获得与“Project1,Project2,Project3”相同的值,因此我会将其作为参数发送到 SQL。

假设如果他们选择“Project5,Project1”...Project1 不应添加,因为它已经存在。

有人可以建议我如何检查新值和现有值并进行相应更新。 我的简单更新不适用于这种情况。有点震惊。

谢谢

【问题讨论】:

    标签: c# sql-server telerik


    【解决方案1】:

    您可以创建一个存储过程并根据需要使用合并到insertupdate,如下例所示

    DECLARE @nameField    VarChar(50) = 'some data'
    
    MERGE dbo.MyTable t
    USING (SELECT @nameField [field]) s
        ON t.myData = s.field
    WHEN MATCHED THEN
        UPDATE
        SET t.myData = @nameField
    WHEN NOT MATCHED THEN
        INSERT (myData)
        VALUES (@nameField);
    

    如果您想限制冗余更新,例如如果使用完全相同的数据更新 Project Column 并阻止此类更新,则您需要创建更新 trigger 以检查并阻止更新。

    【讨论】:

    • 它不起作用...因为它们不是单个值...如果他们从 Telerik 下拉列表中选择不同的值(例如“Project4”作为“Project1,Project2”),我需要更新此行项目 3,项目 4'
    • @user1046415 你的表是什么样的,你发送到数据库的数据是什么样的?从您的问题中,我了解到您要检查的是一列,如果有不同的更新,如果不存在插入,否则什么都不做,这是不对的吗?
    • Mytable 有几列,但我只更新一个值,即 ProjectName。列中的数据被插入为“Project1,Project2,Project3”。所以我必须能够将其更新为“ Project1,Project2,Project3,Project4' 如果他们从下拉列表中选择 Project4。希望对您有所帮助..
    • @user1046415 Project1,Project2,Project3 是您在 ProjectName 列中插入的内容吗?什么是你的关键,你如何识别表中的一行?
    • 我有 ID 作为 PrimaryKey...是的,我们有这样一个场景,员工可以为多个项目工作。
    猜你喜欢
    • 1970-01-01
    • 2014-06-27
    • 1970-01-01
    • 2020-04-16
    • 2021-07-03
    • 1970-01-01
    • 2017-03-11
    • 2011-10-30
    • 2020-08-01
    相关资源
    最近更新 更多