我有一个正在处理的 SQL 脚本,当我创建(或编辑)列然后尝试修改该新列时遇到了问题。
例如:
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 块会将这两个项目分开,但我收到一个错误“无效的列名'ColumnThree'”。当我尝试运行它时。为什么?不应该第一个 BEGIN/END 设置 ColumnThree 和更多的点,如果该列名不存在,IF(EXISTS 应该保护 UPDATE 语句不被运行。
做这样的事情的正确方法是什么?(我似乎有几个类似的场景需要这样做)。