繁体   English   中英

SQL Server错误:无效的列名

[英]SQL Server error: Invalid column name

单击某些链接“默认”后,将执行以下SP。 我想要的是,当单击链接“ Make Default”时,仅将与特定“ UserAddressID”相对应的“ IsDefault”记录设置为1,并将所有其他记录在teable的列中设置为0

给我以下错误:

无效的列名“ UserAddressID”

当该列存在时! 我的SP有什么问题?

问题在这里:

if(UserAddressID!=@UserAddressID)

在SQL语句范围之外, UserAddressID列不存在。

实际上,您根本不需要if语句。 您要检查的条件已包含在SQL中。

您还可以将两个查询合并为一个更新:

UPDATE SC.UserAddressDetails
SET IsDefault = (CASE WHEN UserAddressID=@UserAddressID THEN 1 ELSE 0 END)

您可以使用-将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 

这听起来像是模式问题,这就是为什么您的存储过程变得混乱的原因。 在“用户”表中创建一个名为DefaultUserAddressID的列。 然后只能有一个。 在Addresses表上创建IsDefault列不是一个很好的设计,因为它使用更多的数据来实现同一操作,容易出错,并且要求您在所有存储的更新proc信息的proc中进行各种其他检查。

简单更好。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM