mssql sqlserver alter 添加列(新增列)后,运行update时,提示列名无效


摘要:
下文主要讲述,对表新增列后,立即操作新增列,出现的”列名无效”的解决方法


  create   table A (keyId int)
 go
insert into A (keyId)values(1)
insert into A (keyId)values(2)
insert into A (keyId)values(3)
------------------------------
select  * from A 
alter table A add name int  ---新增列
update A set Name =2300 where keyId =2 
---更新指定行数据   
---系统返回相应的错误信息  
---- 消息 207,级别 16,状态 1,第 9 行
----列名 'Name' 无效。     
go
truncate table A 
drop table A 
mssql_update_alter_系统错误信息

mssql_update_alter_系统错误信息



以上错误的产生,是db在执行数据库脚本时,在生成执行计划时,所产生的错误信息,例:
在生成update代码的执行计划时,此时DB检测不存在列 name 所以系统产生相应的错误信息。
————————————-
解决方法:
方法1: 在alter table A add name int 后面加上go 使此段代码作为一个代码段先执行先提交,然后再执行 update
方法2: 加update A set name=2300 where keyId=2 替换为 exec (‘update A set name=2300 where keyId=2’)