笔记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