所以我希望能够更新表格中的一行。我知道怎么做
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,但它会带来很大的安全风险。我有办法更快地完成这项工作吗?或者没有办法解决这个问题?如果您需要更多信息,请询问。
答案 0 :(得分:0)
您可以使用COALESCE
/ ISNULL
但不需要选择旧值作为子查询的默认值,您可以直接使用它:
UPDATE Param
SET Param1=COALESCE(@Param1,Param1), Param2=COALESCE(@Param2,Param2), ...
WHERE ParamId = @ParamId
但是,通过这种方式,您无法将可为空的列设置为NULL
。我认为这是理想的。