2012-06-15 105 views
1

在Postgres中可能在CREATE TABLE上有一個觸發器,它將爲新創建的表創建觸發器嗎?,是否有可能創建觸發器到CREATE TABLE上的觸發器的表?

例如,

CREATE TABLE base_abc(
    ... 
) inherits(base); 

我想自動觸發器添加到新創建的表base_abc會,例如,會計算基於列名的列值。

同樣,是否可以在ALTER TABLE上觸發,以便可以刪除和重新創建觸發器?

的情況下,看到what is best way to extend postgresql to index json objects?

+1

你介意我問你是什麼樣的事情需要動態創建表嗎?不要說這100%是令人難以置信的,但讓我們說,在絕大多數情況下,「正確」的方式不是這樣。 – Amadan

+0

不是動態表創建,而是在表上動態創建觸發器。我已經改變了這個問題來澄清。 –

+0

通過「動態表創建」,我的意思是在應用程序運行時創建表,而不是在應用程序設置時只做一次。如果您在安裝後不創建表格,則不需要觸發器即可通知您此類事件。這有點像問:「在我把它帶到我口中之前,我可以用什麼來降低肉的脫落率?」甚至沒有注意到,也許,也許,也許,一個分叉將更好地爲此目的,而不是一個尖的黃油刀。不是說你的情況就是這樣,但我很好奇。 – Amadan

回答

1

不要以爲有實現這種「觸發」使用PostgreSQL內置函數的方式,但你絕對可以編寫一個存儲功能,將你想要做什麼 - 即創建派生表,然後是該表上的觸發器。

您也可以爲ALTERing表編寫一個。

+0

權利 - 沒有觸發DDL在Postgres,甚至沒有CREATE TABLE或ALTER TABLE - 似乎有一個巨大的需求,尤其是從複製器,但還沒有 –