首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Server错误:无效列名

Server错误:无效列名
EN

Stack Overflow用户
提问于 2010-11-19 06:59:44
回答 3查看 1.8K关注 0票数 0

当单击某些链接"Make“时,将执行以下SP。我想要的是,当单击"Make默认“链接时,只有对应于特定"UserAddressID”的“UserAddressID”记录被设置为1,其余的记录在teable的列中设置为0

给我以下错误:-

无效列名“UserAddressID”

当列存在时!我的SP怎么了??

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2010-11-19 07:01:40

问题在于:

代码语言:javascript
复制
if(UserAddressID!=@UserAddressID)

UserAddressID不存在于SQL语句的作用域之外。

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

还可以将这两个查询合并到一个更新中:

代码语言:javascript
复制
UPDATE SC.UserAddressDetails
SET IsDefault = (CASE WHEN UserAddressID=@UserAddressID THEN 1 ELSE 0 END)
票数 2
EN

Stack Overflow用户

发布于 2010-11-19 07:08:55

可以使用以下方法将IsDefault值更新为1-

代码语言:javascript
复制
UPDATE SC.UserAddressDetails SET IsDefault=1 WHERE UserAddressID=@UserAddressID

在表结构中,可以将ISDefault的默认值设置为0。在这种情况下,您将不需要再次使用

代码语言:javascript
复制
ALTER TABLE SC.UserAddressDetails ADD CONSTRAINT default_isdefault DEFAULT 0 FOR IsDefault 
票数 1
EN

Stack Overflow用户

发布于 2010-11-19 07:24:45

这听起来像是一个模式问题,这就是为什么存储的过程变得令人困惑。在User表中创建一个名为DefaultUserAddressID的列。那就只能有一个。在address表上创建一个IsDefault列并不是很好的设计,因为它使用了更多的数据来实现相同的目标,而且容易出错,并且要求您在所有更新地址信息的存储过程中进行各种其他检查。

简单更好。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4222827

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档