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