Проверьте, существует ли столбец, затем измените столбец из таблицы? - PullRequest
0 голосов
/ 21 апреля 2020

Я хочу написать sql скрипт, который должен проверить, существует ли столбец в таблице, а затем удалить столбец, если предыдущий оператор верен. База данных, которую я использую - Sybase ASE, и это код, который я пытался использовать:

IF EXISTS (SELECT 1 FROM syscolumns WHERE id = object_id('users') AND name = 'maiden_name')
    BEGIN
        ALTER TABLE security DROP maiden_name
    END

Приведенный выше код был успешно выполнен при первом запуске. Во второй раз я получаю сообщение об ошибке:

Invalid column name 'maiden_name'

Если столбец не существует, блок кода ALTER TABLE не должен выполняться. Есть ли способ добиться этого в Sybase? Спасибо.

1 Ответ

3 голосов
/ 21 апреля 2020

Вы можете использовать Dynami c SQL:

IF EXISTS (SELECT 1 FROM syscolumns WHERE id = object_id('users') AND name = 'maiden_name')
    BEGIN
        EXEC('ALTER TABLE security DROP maiden_name')
    END;

Проблема в том, что парсер пытается проанализировать ALTER во время фазы компиляции , и это выдает ошибку, если столбец не существует.

...