Я хочу написать запрос для MS SQL Server, который добавляет столбец в таблицу. Но я не хочу отображать ошибки, когда запускаю / выполняю следующий запрос.
Я использую этот вид запроса, чтобы добавить таблицу ...
IF EXISTS (
SELECT *
FROM sys.objects
WHERE OBJECT_ID = OBJECT_ID(N'[dbo].[Person]')
AND TYPE IN (N'U')
)
Но я не знаю, как написать этот запрос для столбца.
sql-server
add
not-exists
Tavousi
источник
источник
sys.tables
вместо «универсальный»sys.objects
- тогда вам не нужно явно указывать тип (это очевидно изsys.tables
уже ....)Ответы:
Вы можете использовать аналогичную конструкцию, используя
sys.columns
таблицу iosys.objects
.источник
EXISTS
предложении идентичны. Такие вещи, какSELECT 1
илиSELECT TOP 1
не нужны. СамоEXISTS
предложение указывает оптимизатору запросов выполнять только минимальные чтения, необходимые для оценкиEXISTS
... хотя бы в SQL Server. Другие механизмы БД могут иметь более или менее эффективный оптимизатор запросов.ADD Column
запросы ... вы должны запускать их слишком часто!источник
COL_LENGTH('table_name', '[column_name]')
в SQL Server 2016 всегда возвращаются пустые значения (COL_LENGTH('[table_name]', 'column_name') works as expected
).Еще одна альтернатива. Я предпочитаю такой подход, потому что он меньше пишет, но оба выполняют одно и то же.
Я также заметил, что ваш ищет, где таблица существует, очевидно, именно это
источник
Вот еще один вариант, который работал для меня.
IF NOT EXISTS (SELECT 1 FROM SYS.COLUMNS....
источник
Надеюсь, это поможет. Больше информации
источник
При проверке столбца в другой базе данных вы можете просто включить имя базы данных:
источник
источник