【发布时间】:2012-01-17 18:32:22
【问题描述】:
我有一个关于通过 t-sql 更新表的问题。客户可能想要更新一行中的一列,而其余的保持不变,或者他可能想要更新多列。所以我有两个解决方案:
创建一个 sp 并更新整个表。客户必须提供所有参数,即使他想更新一行中的单个列,所以如果他为他没有的参数传递(他必须)null......那么原始值将丢失.作为一种解决方法,我可以使用条件来检查空参数(基于条件的不同命令)。但是还有另一个问题,如何识别 int 参数?我的意思是假设我们有一个 int 列,它可以包含任何整数值,包括零,那么客户端应该向 sp 发送什么来表示“这不是一个新值,保持原样”。
每列创建一个 sp。客户端将使用适当的 sp 更新一行中的单个列,因此如果他想更新多个列,他可以一个接一个地调用每个相关的 sp 并传递两个参数,即行 ID 和新值.如果我有一个包含 25 个可更新列的表怎么办?天啊! 25 只为单个表更新 sp!
我是否必须为每个表列创建一个更新 sp?或者创建一个接收所有行参数并更新整个表的 sp?编写更新程序的事实标准是什么?
EDIT1:我正在使用带有前端 c# 和 asp.net 应用程序的 sql server 2005,但我想在 t-sql 中进行。
【问题讨论】:
-
您使用的是什么版本的 SQL Server?
标签: sql-server-2005 tsql stored-procedures