0

したがって、テーブルの行を更新できるようにしたいと考えています。私はこれを行う方法を知っています

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 について考えていましたが、多くのセキュリティ リスクをもたらします。これをより速く行う方法はありますか?それともこれを回避する方法はありませんか?さらに情報が必要な場合は、お問い合わせください。

4

1 に答える 1

0

COALESCE/を使用できますISNULLが、サブクエリとしてデフォルトとして古い値を選択する必要はありません。直接使用できます。

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

ただし、この方法では、null 許容列を に設定することはできませんNULL。これは望ましいと思います。

于 2013-11-12T21:32:10.133 に答える