例外は、規則の例外のように「例外的」であるべきです。このコードを実行する予定はありますか? 90% の確率で列が存在しますか?
それでは「例外的」ではありません。
通常のロジック フローとして例外キャッチを使用しないでください。
私よりも賢い人によるいくつかの指針を次に示します。
http://blogs.msdn.com/b/kcwalina/archive/2005/03/16/396787.aspx
「通常の制御フローに例外を使用しないでください。」
これが私の典型的な冪等追加列 tsql です。
IF EXISTS ( SELECT TABLE_SCHEMA , TABLE_NAME FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME = 'Categories' and TABLE_SCHEMA = 'dbo' )
BEGIN
IF NOT EXISTS
(
SELECT *
FROM [INFORMATION_SCHEMA].[COLUMNS]
WHERE
TABLE_NAME = 'Categories'
AND TABLE_SCHEMA = 'dbo'
AND COLUMN_NAME = 'CategoryName'
)
BEGIN
print 'Adding the column dbo.Categories.*CategoryName*'
ALTER TABLE [dbo].[Categories] ADD [CategoryName] nvarchar(15) NOT NULL
END
ELSE
BEGIN
print 'The column dbo.Categories.*CategoryName* already exists.'
END
END