在Postgres中创建了一个事件触发器,但是没有显示?

时间:2018-11-02 22:36:05

标签: sql postgresql

这是AWS RDS下的Postgres 10.3。

在下面的摘录中,我仅使用public作为search_path。

我正在尝试采用如下定义的现有事件触发器:

FragmentPagerAdapter

哪个是过去创建的,并显示如下:

CREATE EVENT TRIGGER update_last_modified ON ddl_command_end
    WHEN tag IN ('CREATE TABLE')
    EXECUTE PROCEDURE mll_audit();

新触发器将调用一个新过程,但是暂时,我只是在尝试验证是否可以创建一个新过程:

=> \df *modified*
                                List of functions
 Schema |         Name         | Result data type | Argument data types |  Type   
--------+----------------------+------------------+---------------------+---------
 public | update_last_modified | trigger          |                     | trigger

显然,这可以很好地显示,但不会显示:

CREATE EVENT TRIGGER deltest_update_last_modified ON ddl_command_end
    WHEN tag IN ('CREATE TABLE')
    EXECUTE PROCEDURE mll_audit();

如果我尝试不删除就重新创建,它会错误地指出它已经存在:

=> CREATE EVENT TRIGGER deltest_update_last_modified ON ddl_command_end
    WHEN tag IN ('CREATE TABLE')
    EXECUTE PROCEDURE mll_audit();
CREATE EVENT TRIGGER

rwe=> \df *deltest*modified*
                       List of functions
 Schema | Name | Result data type | Argument data types | Type 
--------+------+------------------+---------------------+------
(0 rows)

=> \df *modified*
                                List of functions
 Schema |   rwe=> \df *deltest*modified*
                       List of functions
 Schema | Name | Result data type | Argument data types | Type 
--------+------+------------------+---------------------+------
(0 rows)

=> \df *modified*
                                List of functions
 Schema |         Name         | Result data type | Argument data types |  Type   
--------+----------------------+------------------+---------------------+---------
 public | update_last_modified | trigger          |                     | trigger
(1 row)

=> select proname from pg_proc where proname like '%modified%';
       proname        
----------------------
 update_last_modified
(1 row)

我觉得我必须缺少一些基本知识。我只想在公共架构中创建它。

1 个答案:

答案 0 :(得分:1)

\df列出函数,而不是事件触发器。 \dy用于列出事件触发器。您只是碰巧 还有一个名为update_last_modified的函数(也许是无意的?)。