В таблице SQL у меня есть сценарий SQL для удаления столбца, который дает ошибку, недопустимый столбец не существует - PullRequest
1 голос
/ 05 апреля 2019

Итак, я таблица в базе данных SQL sample_table, которая содержит следующие столбцы: -

Id, first_name, last_email, email, user_type.

Теперь я хочу написать скрипт для удаления столбцаuser_type, если он существует.Итак, у меня есть следующий скрипт: -

 IF EXISTS(SELECT *
      FROM   INFORMATION_SCHEMA.COLUMNS
      WHERE  TABLE_NAME = 'sample_table'
             and COLUMN_NAME = 'user_type')
 BEGIN
    ALTER TABLE sample_table
    DROP COLUMN user_type
 END
 GO   

Согласно сценарию условие if существует правильно, но даже если оно дает ошибку времени компиляции неверный столбец user_type не существует , если этоскрипт выполняется более одного раза, так что есть ли способ пропустить ошибку.Если таковые имеются, пожалуйста, предложите, как.Я попытался с sys объект также дает ту же ошибку.Так что я просто хочу знать, есть ли способ пропустить получение этой ошибки?Также есть ли способ помимо использования динамического запроса, если таковые имеются?

Заранее спасибо.

1 Ответ

0 голосов
/ 05 апреля 2019

Если вы можете допускать несколько пакетов, но по какой-то причине не можете допустить динамический SQL, вы можете использовать NOEXEC:

IF NOT EXISTS(SELECT *
    FROM   INFORMATION_SCHEMA.COLUMNS
    WHERE  TABLE_NAME = 'sample_table'
       and COLUMN_NAME = 'user_type')
BEGIN
   SET NOEXEC ON
END
GO   
ALTER TABLE sample_table
    DROP COLUMN user_type
GO
SET NOEXEC OFF

В любом случае важно то, что вы не пытаетесь Скомпилируйте оператор ALTER TABLE, пока не убедитесь, что необходимые объекты существуют.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...