更新包含多列的行

时间:2013-11-12 21:27:10

标签: sql sql-update

所以我希望能够更新表格中的一行。我知道怎么做

UPDATE Param                
SET(Param1=@Param1, Param2=@Param2, Param3=@Param3, ...)
WHERE ParamId = @ParamId

问题是我不知道哪个列会更新,哪个不会更新,这取决于用户更改的内容。我有很多参考资料要检查。

--idk if this will work, I am just trying to limit the amont of code posted
ISNULL(@Param1, Select Param1 from Param where WHERE ParamId = @ParamId) 

我在考虑动态SQL,但它会带来很大的安全风险。我有办法更快地完成这项工作吗?或者没有办法解决这个问题?如果您需要更多信息,请询问。

1 个答案:

答案 0 :(得分:0)

您可以使用COALESCE / ISNULL但不需要选择旧值作为子查询的默认值,您可以直接使用它:

UPDATE Param                
SET Param1=COALESCE(@Param1,Param1), Param2=COALESCE(@Param2,Param2), ...
WHERE ParamId = @ParamId

但是,通过这种方式,您无法将可为空的列设置为NULL。我认为这是理想的。