DROP PROCEDURE в PostgreSQL: удаление процедуры

В PostgreSQL команда DROP PROCEDURE используется, чтобы удалить процедуру из базы данных. После её удаления больше нельзя будет вызвать эту процедуру, а другие объекты, которые её использовали, могут перестать работать.

Как выглядит команда

DROP PROCEDURE [IF EXISTS] имя_процедуры(аргументы) [CASCADE | RESTRICT];
  • IF EXISTS — проверяет, есть ли такая процедура, и не выдаёт ошибку, если её нет.
  • CASCADE — удаляет не только саму процедуру, но и всё, что от неё зависит.
  • RESTRICT — запрещает удаление, если у процедуры есть зависимости (используется по умолчанию).

Удаление процедуры без параметров

Если процедура не принимает параметры:

DROP PROCEDURE log_event();

Удаление процедуры с параметрами

Если процедура принимает параметры, при удалении нужно указать их типы:

DROP PROCEDURE add_user(TEXT, TEXT);

Удаление процедуры, если она может отсутствовать

Если есть вероятность, что процедура уже удалена или не существовала, используют IF EXISTS, чтобы избежать ошибки:

DROP PROCEDURE IF EXISTS old_procedure();

Удаление процедуры вместе с зависимыми объектами

Если процедура связана с другими объектами (например, другими процедурами или триггерами), её можно удалить вместе с ними с помощью CASCADE:

DROP PROCEDURE process_data() CASCADE;

Эта команда удалит процедуру и все объекты, которые от неё зависят.

Запрет удаления, если есть зависимости

Если нельзя удалить зависимые объекты, используют RESTRICT:

DROP PROCEDURE process_data() RESTRICT;

Если у процедуры есть зависимости, PostgreSQL выдаст ошибку и не позволит её удалить.