Автоматизация стандартных процедур
Удаление триггера
Команда DROP TRIGGER удаляет триггер из базы данных. Удаление триггеров, как и их создание командой CREATE TRIGGER, может выполняться только владельцем триггера или суперпользователем.
Синтаксис удаления существующих триггеров:
DROP TRIGGER имя ON таблица
В листинге 7.36 приведен пример удаления триггера check_shipment, установленного для таблицы shipments.
Листинг 7.36. Удаление триггера.
booktown=# DROP TRIGGER check_shipment ON shipments: DROP
Сообщение DROP означает, что триггер успешно удален. Обратите внимание: при удалении указывается не только имя удаляемого триггера, но и имя таблицы.
Если вы не помните, в какой таблице был установлен удаляемый триггер, необходимую информацию можно получить из системных таблиц PostgreSQL. Например, можно провести объединение полей tgrelid системной таблицы pg_trigger и поля rel f i I enode системной таблицы pg_class и сравнить имя триггера с полем tgname. Запрос, приведенный в листинге 7.37, возвращает имя отношения (relname), связанного с триггером check_shipment.
Листинг 7.37. Получение имени таблицы, связанной с триггером.
booktown=# SELECT relname FROM pg_class booktown-# INNER JOIN pg_trigger booktown-# ON (tgrelid = relfilenode) booktown-# WHERE tgname = 'check_shipment':. relname shipments (1 row)
Внимание
При удалении функции, вызываемой по срабатыванию триггера, триггер перестает работать, причем повторное определение функции с тем же именем не исправит проблему. После повторного создания функции триггер также приходится создавать заново.