функция триггера
CREATE OR REPLACE FUNCTION delete_abonent() RETURNS TRIGGER AS $$ BEGIN
IF OLD.bilet_number IN (SELECT bilet_number FROM all_lends) THEN
RAISE EXCEPTION 'У этого абонента есть выданные книги!'; RETURN NULL; END IF;
DELETE FROM all_users WHERE user_login = OLD.user_login;
EXECUTE format('DROP USER %I', OLD.user_login);
DELETE FROM all_abonents WHERE bilet_number = OLD.bilet_number;
END; $$ LANGUAGE plpgsql;
триггер
CREATE TRIGGER before_delete_abonent INSTEAD OF DELETE ON all_abonents
FOR EACH ROW EXECUTE PROCEDURE delete_abonent();
пытаюсь удалить запись, вызвав триггер, но почему-то пишет, что роли не существует, хотя она есть
как это понять?

P.S.
с условием drop user IF EXISTS функция уходит в бесконечный цикл
полагаю без условия при первом проходе удаляется, а потом вот эта ошибка
но откуда тут цикл?
P.P.S.
проблема не в удалении роли, а как раз в этом цикле, т.е. даже без команды удаления роли не работает

что-то с этим оператором не так, не пойму что
DELETE FROM all_abonents WHERE bilet_number = OLD.bilet_number;