3
我有一个SQL脚本,我正在处理,并且在创建(或编辑)列时遇到问题,然后尝试修改该新列。SQL Alter Table然后修改值
例如:“无效的列名称ColumnThree'”
BEGIN
ALTER TABLE SampleTable ADD ColumnThree int
END
IF (EXISTS (SELECT * FROM sys.columns WHERE name = 'ColumnThree'))
BEGIN
UPDATE SampleTable SET ColumnThree = 0
END
现在我还以为BEGIN/END块会分离这两个项目,但我得到一个错误当我试图运行这个。为什么?不应该第一个BEGIN/END设置ColumnThree以及更多的IF(如果该列名不存在,EXISTS应该保护UPDATE语句不被运行)
什么是正确的做某事的方法这样吗?(我似乎有几个类似的场景中,这是需要的)。
INFORMATION_SCHEMA.COLUMNS非常适合检查列是否存在 – 2009-08-18 13:00:28
@Russ:您将自己的便携式解决方案留给自己! :) – Eric 2009-08-18 13:04:35
完美,非常感谢......也可以作为(在事件中有第一个BEGIN/END多个项目): BEGIN \t ALTER TABLE SampleTable ADD ColumnThree诠释\t END GO IF( EXISTS(SELECT * FROM sys.columns WHERE name ='ColumnThree')) BEGIN \t UPDATE SampleTable SET ColumnThree = 0 END – ChrisHDog 2009-08-18 13:05:04