使用单个SQL查询更新具有不同类型值的多个行

时间:2012-01-05 06:48:44

标签: asp.net sql-server

我在数据库中有10个字段,我的UI页面中有10个不同的按钮。我正在尝试单独更新我的数据库字段。当我单击1按钮时,它将更新一个字段,第二个为另一个字段,依此类推,但只使用一个SQL更新查询。这在SQL Server 2008中是否可行 如果是,那么请建议。

日Thnx

2 个答案:

答案 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按钮并立即更新所有列?

相关问题