2009-12-31 25 views
0

我需要創建一個函數,在每次UPDATE和INSERT操作後觸發,並檢查表中關鍵字段的操作是否在某些情況下執行。如何獲取plpgsql函數中的表的關鍵字段?

函數(和觸發器)需要是通用函數,它不應該使表格名稱/字段名稱硬編碼。

我被卡在需要訪問表名及其模式部分的部分 - 檢查哪些字段是PRIMARY KEY的一部分。

回答

1

請注意,您不能在PL/pgSQL中使用動態SQL;它太強大了 - 爲此鍵入了一種語言。 PL/Perl會帶來更多的運氣,您可以在其中訪問列的散列並使用常規Perl訪問器來檢查它們。 (PL/Python的也將工作,但可悲的是這是一個不可信的語言而已。PL/Tcl裏工作過。)

在8.4你可以使用EXECUTE 'something' USING NEW,在某些情況下是可以做的工作。

+0

了不起的信息,謝謝。我想堅持PL/Perl。 – kender 2010-01-04 06:42:20

2

在獲得第一個答案中發佈的主鍵信息後,您可以檢查http://github.com/fgp/pg_record_inspect中的代碼,以便在PL/pgSQL中獲得動態的記錄字段值。

+0

很棒的擴展!易於安裝和運行良好!謝謝! – Viktor 2013-11-25 14:48:56

相關問題