当单击某些链接"Make“时,将执行以下SP。我想要的是,当单击"Make默认“链接时,只有对应于特定"UserAddressID”的“UserAddressID”记录被设置为1,其余的记录在teable的列中设置为0
给我以下错误:-
无效列名“UserAddressID”
当列存在时!我的SP怎么了??
发布于 2010-11-19 07:01:40
问题在于:
if(UserAddressID!=@UserAddressID)列UserAddressID不存在于SQL语句的作用域之外。
实际上,您根本不需要if语句。您正在检查的条件已经包含在SQL中。
还可以将这两个查询合并到一个更新中:
UPDATE SC.UserAddressDetails
SET IsDefault = (CASE WHEN UserAddressID=@UserAddressID THEN 1 ELSE 0 END)发布于 2010-11-19 07:08:55
可以使用以下方法将IsDefault值更新为1-
UPDATE SC.UserAddressDetails SET IsDefault=1 WHERE UserAddressID=@UserAddressID在表结构中,可以将ISDefault的默认值设置为0。在这种情况下,您将不需要再次使用
ALTER TABLE SC.UserAddressDetails ADD CONSTRAINT default_isdefault DEFAULT 0 FOR IsDefault 发布于 2010-11-19 07:24:45
这听起来像是一个模式问题,这就是为什么存储的过程变得令人困惑。在User表中创建一个名为DefaultUserAddressID的列。那就只能有一个。在address表上创建一个IsDefault列并不是很好的设计,因为它使用了更多的数据来实现相同的目标,而且容易出错,并且要求您在所有更新地址信息的存储过程中进行各种其他检查。
简单更好。
https://stackoverflow.com/questions/4222827
复制相似问题