Удалить строку в триггере (PostgreSQL) - PullRequest
3 голосов
/ 29 ноября 2010

У меня есть триггер при обновлении, который должен удалить строку OLD *, но я не знаю структуру таблицы.Поэтому я попытался использовать information_schema для захвата имен столбцов, но это очень медленно.

Возможно ли выполнить удаление без знания структуры таблицы?

UPD: Триггер должен принимать строку любой таблицы, поэтому триггерная функция не может ничего знать о таблице до ее вызова.

UPD2:
Это хорошо работает для меня:

EXECUTE 'DELETE FROM ' || tablename || ' WHERE ctid=$1' USING OLD.ctid;

Ответы [ 3 ]

1 голос
/ 29 ноября 2010

Ознакомьтесь с этой статьей:

Динамические триггеры в PLpgSQL

1 голос
/ 29 ноября 2010

Зачем тебе это?Обновление - это вставка новой версии и удаление старой версии записи.Этот триггер не нуждается в дополнительном удалении, триггер никогда не найдет запись, потому что запись уже удалена.

0 голосов
/ 29 ноября 2010

Вы можете описать таблицу в Postgre SQL, используя \d+ tablename.

...