#tsql
#tsql
Вопрос:
Я написал IF
инструкцию, показанную ниже, для проверки столбца Data_Type
, а затем выполнил некоторую логику. К сожалению, я IF
пропускаю случай, когда это true
.
IF N'int' in (
SELECT DATA_TYPE
FROM INFORMATION_SCHEMA.COLUMNS
WHERE
TABLE_NAME = 'TempTable' AND
COLUMN_NAME = 'Id')
BEGIN
ALTER TABLE TempTable ADD PRIMARY KEY (Id);
END
ELSE
BEGIN
ALTER TABLE TempTable ADD Idd int NOT NULL
ALTER TABLE TempTable ADD PRIMARY KEY (Idd)
END;
Я запустил этот запрос в другом окне:
SELECT DATA_TYPE
FROM INFORMATION_SCHEMA.COLUMNS
WHERE
TABLE_NAME = 'TempTable' AND
COLUMN_NAME = 'Id'
он вернул меня 'int'
. Почему тогда оно сразу переходит к 'ELSE'
утверждению, даже если оно истинно?
Комментарии:
1. Вы запускаете первый скрипт в базе данных, где находится таблица? INFORMATION_SCHEMA.COLUMNS применяется к текущей базе данных.
2. Он начал работать после того, как я перезапустил SSMS. Понятия не имею, в чем проблема.