У меня проблема с удалением строк в таблице, которая имеет триггер, который вызывает триггер второй таблицы, который обновляет строку в первой таблице.Вот описание:
Table A (id,b_table_count)
Table B (id,a_table_id_fk)
Таблица A имеет триггер BEFORE DELETE, в котором есть инструкции:
BEGIN
DELETE FROM b where a_table_fk = OLD.id;
RETURN OLD;
END;
Таблица B имеет триггер AFTER DELETE с инструкцией:
UPDATE a SET b_table_count = b_table_count-1 WHERE OLD.a_table_id_fk = a.id;
Когда я удаляю строку из таблицы A, у которой нет связанных строк в B, все правильно.
Но когда я удаляю строку из таблицы A, у которой есть связанные строки в таблице B, оператор DELETE возвращает "Запрос возвращен успешно: затронуто 0 строк ".Я должен выполнить DELETE statment второй раз, затем строка окончательно удаляется.После первого удаления только связанные строки удаляются в таблице B, но строка, удаляемая в таблице A., остается.
У вас есть ответ на этот вопрос?Я подозреваю, что pgsql не позволяет обновить строку, удаляемую в триггере, но я не нашел ничего об этом в документации pgsql.Какое решение?