特定の列が存在しない場合に、その列を追加する必要があります。以下のようなものがありますが、常にfalseを返します。
IF EXISTS(SELECT *
FROM INFORMATION_SCHEMA.COLUMNS
WHERE TABLE_NAME = 'myTableName'
AND COLUMN_NAME = 'myColumnName')
SQL Serverデータベースのテーブルにカラムが存在するかどうかを確認するにはどうすればよいですか?
お客様のご要望に応じて、以下のように調整してください。
if not exists (select
column_name
from
INFORMATION_SCHEMA.columns
where
table_name = 'MyTable'
and column_name = 'MyColumn')
alter table MyTable add MyColumn int
質問の編集に対応するための編集。例えば、挿入が適用されているのと同じデータベースのINFORMATION_SCHEMAを照会していますか?例えば、挿入が適用されているのと同じデータベースのINFORMATION_SCHEMAを照会していますか?どちらかのステートメントのテーブル/カラム名にタイプミスがありますか?
試しに...
IF NOT EXISTS(
SELECT TOP 1 1
FROM INFORMATION_SCHEMA.COLUMNS
WHERE
[TABLE_NAME] = 'Employees'
AND [COLUMN_NAME] = 'EmployeeID')
BEGIN
ALTER TABLE [Employees]
ADD [EmployeeID] INT NULL
END
まず、table
/column
(id
/name
)の組み合わせがdbo.syscolumns
(フィールド定義を含むSQL Serverの内部テーブル)に存在するかどうかを確認し、存在しない場合は適切なALTER TABLE
クエリを発行して追加します。例えば、以下のようになります。
IF NOT EXISTS ( SELECT *
FROM syscolumns
WHERE id = OBJECT_ID('Client')
AND name = 'Name' )
ALTER TABLE Client
ADD Name VARCHAR(64) NULL