如何在plpgsql函数中获取表的关键字段?

时间:2009-12-31 09:31:47

标签: postgresql plpgsql

我需要创建一个在每次UPDATE和INSERT操作之后触发的函数,并检查执行该操作的表的关键字段与某些条件。

函数(和触发器)需要是通用函数,它不应该使用硬编码的表名/字段名。

我遇到了需要访问表名及其架构部分的部分 - 检查哪些字段是PRIMARY KEY的一部分。

3 个答案:

答案 0 :(得分:2)

获取第一个答案中已发布的主键信息后,您可以检查http://github.com/fgp/pg_record_inspect中的代码,以便在PL / pgSQL中动态获取记录字段值。

答案 1 :(得分:1)

看一下How do I get the primary key(s) of a table from Postgres via plpgsql?那个答案应该可以帮助你。

答案 2 :(得分:1)

请注意,您不能在PL / pgSQL中使用动态SQL;它的类型太强烈了。 PL / Perl你会有更多的运气,你可以在其上访问列的哈希并使用常规的Perl访问器来检查它们。 (PL / Python也可以,但遗憾的是这只是一种不受信任的语言.PL / Tcl也可以。)

在8.4中,您可以使用EXECUTE 'something' USING NEW,在某些情况下可以使用{{1}}。