我有一个更新触发器,应该删除行 OLD * ,但我不知道表结构。 所以我尝试使用information_schema来获取列名,但它确实很慢。
是否可以在不知道表结构的情况下执行删除?
UPD: 触发器应该接受任何表的行,因此触发器函数在调用之前不能知道有关该表的任何信息。
UPD2:
这对我很有用:
EXECUTE 'DELETE FROM ' || tablename || ' WHERE ctid=$1' USING OLD.ctid;
答案 0 :(得分:1)
查看这篇文章:
答案 1 :(得分:1)
你为什么需要这个?更新实际上是新版本的插入和旧版本记录的删除。此触发器不需要额外删除,触发器将永远不会找到记录,因为记录已经消失。
答案 2 :(得分:0)
您可以使用\d+ tablename
在postgresql中描述该表。