代码之家  ›  专栏  ›  技术社区  ›  The Muffin Man

高级sql更新命令

  •  1
  • The Muffin Man  · 技术社区  · 15 年前

    Active . 默认情况下,除了一行之外,该列的每一行都将包含一个值false。当我选择使用gridview更新新行并使其“Active”列从false更改为true时。。。

    UpdateCommand="UPDATE [RbSpecials] 
                      SET [Name] = @Name, 
                          [Description] = @Description, 
                          [Active] = @Active 
                    WHERE [ID] = @ID">
    
    3 回复  |  直到 15 年前
        1
  •  2
  •   Dustin Laine    15 年前
    UPDATE [RbSpecials] 
    SET 
        [Name] = @Name, 
        [Description] = @Description, 
        [Active] = @Active WHERE [ID] = @ID
    
    UPDATE [RbSpecials] 
    SET 
        [Active] = 0 WHERE [ID] != @ID
    

    您可以创建一个执行此操作的存储过程,然后通过 @Name @Description @ID .

        2
  •  1
  •   zerkms    15 年前
    UPDATE [RbSpecials]
    SET [Active] CASE WHEN [ID] = @ID THEN 1 ELSE 0 END
    

    对于可能出现的错误,我很抱歉,我很久以前没有使用过sql server,但我希望您能理解我的想法

    同样在优化的情况下 WHERE 可以添加子句

    WHERE [ID] = @ID OR [Active] = 1
    
        3
  •  1
  •   Ian Henry    15 年前

    UPDATE [RbSpecials] SET 
        [Name] = case when [ID] = @ID then @Name else [Name] end,
        [Description] = case when [ID] = @ID then @Description else [Description] end,
        [Active] = case when [ID] = @ID then 1 else 0 end
    FROM [RbSpecials]
    

    但是,按照达斯汀·莱恩的回答,用两个语句来表达这一点会更有效率(我没有描述,但似乎很直观),而且绝对更具可读性。