Подтвердить что ты не робот

Как удалить столбец, если и только если он существует в postgres в версии 9+

Я пытаюсь удалить столбец из таблицы.

Что может быть лучшей практикой, чтобы проверить, существует столбец или нет.

Я просмотрел документацию https://www.postgresql.org/docs/9.2/static/sql-altertable.html, но не нашел ни одного примера, как это сделать.

Даже нашел это в stackoverflow Как проверить, существует ли столбец в таблице SQL Server? , но это не так актуально

4b9b3361

Ответ 1

Вам просто нужно добавить IF EXIST в оператор DROP COLUMN:

ALTER TABLE tableName
DROP COLUMN IF EXISTS columnName;

Ответ 2

Вы также можете попробовать метод IF EXISTS, который отлично работает, когда мы используем миграцию

DO $$

BEGIN

    IF EXISTS(
    SELECT column_name FROM information_schema.columns WHERE table_name = tableName AND column_name = columnName)
    THEN
        ALTER TABLE tableName DROP COLUMN columnName;
    END IF;

END $$;