В 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 выдаст ошибку и не позволит её удалить.