作業中の 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 ブロックがこれら 2 つの項目を分離すると考えましたが、「列名 'ColumnThree' が無効です」というエラーが表示されます。これを実行しようとすると。なんで?最初の BEGIN/END でその ColumnThree などを設定して、その列名が存在しない場合に IF(EXISTS で UPDATE ステートメントが実行されないようにする必要があります。
このようなことを行う正しい方法は何ですか? (これが必要な場合、いくつかの同様のシナリオがあるようです)。