在postgresql中,是否可以在CREATE TABLE上使用触发器创建触发器?

时间:2012-06-15 08:03:34

标签: sql postgresql triggers ddl ddl-trigger

是否可以在postgres中在CREATE TABLE上有一个触发器,它将为新创建的表创建触发器?

例如,

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

我想自动将触发器添加到新创建的表base_abc,例如,这将根据列名计算列值。

同样,是否可以在ALTER TABLE上触发,以便可以删除并重新创建触发器?

有关背景信息,请参阅what is best way to extend postgresql to index json objects?

2 个答案:

答案 0 :(得分:1)

不要认为有一种方法可以使用PostgreSQL内置函数来实现这样的“触发器”,但你绝对可以编写一个能够做你想做的存储函数 - 即创建派生表然后在该表上触发

您也可以为ALTERing表写一个。

答案 1 :(得分:1)

在谷歌搜索时发现了这个问题,由于事情变了,决定添加现代答案。从9.3 we have event triggers开始。阅读online docs了解更多信息。

您的要求可以通过类似的方式完成:

private static void Main(string[] args)
{
    Logger.Set("Log", true, 10);
    while (true)
    {
        Logger.Log("anything");
    }
}

请记住,这只是一个可行的示例,请不要盲目复制/粘贴