我在数据库中有10个字段,我的UI页面中有10个不同的按钮。我正在尝试单独更新我的数据库字段。当我单击1按钮时,它将更新一个字段,第二个为另一个字段,依此类推,但只使用一个SQL更新查询。这在SQL Server 2008中是否可行 如果是,那么请建议。
日Thnx
答案 0 :(得分:1)
试试这个
UPDATE yourtable set
field1 = COALESCE(@Button1Param, field1),
field2 = COALESCE(@Button2Param, field2),
...
field10 = COALESCE(@Button10Param, field10)
WHERE Your filter clause
当按下Button1时,只为查询提供@ Button1Param参数值,留下其他= DBNull.Value
因此,您不必使用动态或多个不同的查询
答案 1 :(得分:0)
只能通过动态SQL,但仍然不是很简单。
您需要附加到每个按钮的代码,说明它代表哪个列,因此您的查询看起来像
DECLARE @SQL = NVARCHAR(MAX)
SET @SQL = 'UPDATE [db].[dbo].[table] SET ' + @__upd_button_col + ' = ''' + @__upd_button_Value + ''' WHERE ID = ''' + @__upd_ID + ''''
sp_executesql @SQL
然而,这是非常糟糕的设计(除非您的要求特别要求)。为什么不编辑10个字段,然后在应用程序中使用-one- commit按钮并立即更新所有列?