笔记1 ALTER添加列后,立即UPDATE该列会报错,通过EXEC ,把UPDATE的执行计划生成放到执行时进行

笔记1 ALTER添加列后,立即UPDATE该列会报错,通过EXEC ,把UPDATE的执行计划生成放到执行时进行 

 1 --ALTER添加列后,立即UPDATE该列会报错,通过EXEC ,把UPDATE的执行计划生成放到执行时进行 
 2 --参考网址:http://social.technet.microsoft.com/Forums/zh-CN/sqlserverzhchs/thread/78f2eb47-49f4-4a33-a109-5409a87979b2
 3 DROP TABLE #t
 4 CREATE  TABLE #t
 5 (col1 INT NOT NULL
 6 )
 7 GO
 8 INSERT INTO #t SELECT
 9 1;
10 SELECT * FROM #t
11 ALTER TABLE #t ADD col2 INT
12 
13 --UPDATE #t SET col2=0 WHERE col1 =1
14 --这里会报列名无效,
15 --因为当你把 alter table 和 update 放在一齐的时候,在分析并生成执行计划这步,由于列不存在,所以无法为 update 生成执行计划,
16 --所以就报错了
17 
18 --方法一:
19 --GO 可以使用GO但是会把以前的事务全部提交,详见参考网址
20 
21 
22 
23 --方法二:
24 --EXEC('UPDATE #t SET col2 = 0 where col1=1')
25 SELECT * FROM #t 

 

posted @ 2013-07-27 13:19  桦仔  阅读(747)  评论(0编辑  收藏  举报