删除触发器中的行(PostgreSQL)

时间:2010-11-29 06:30:59

标签: postgresql triggers plpgsql

我有一个更新触发器,应该删除行 OLD * ,但我不知道表结构。 所以我尝试使用information_schema来获取列名,但它确实很慢。

是否可以在不知道表结构的情况下执行删除?

UPD: 触发器应该接受任何表的行,因此触发器函数在调用之前不能知道有关该表的任何信息。

UPD2:
这对我很有用:

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

3 个答案:

答案 0 :(得分:1)

查看这篇文章:

Dynamic Triggers in PLpgSQL

答案 1 :(得分:1)

你为什么需要这个?更新实际上是新版本的插入和旧版本记录的删除。此触发器不需要额外删除,触发器将永远不会找到记录,因为记录已经消失。

答案 2 :(得分:0)

您可以使用\d+ tablename在postgresql中描述该表。