簡體   English   中英

在Postgres中創建了一個事件觸發器,但是沒有顯示?

[英]Created an event trigger in Postgres but doesn't show up?

這是AWS RDS下的Postgres 10.3。

在下面的摘錄中,我僅對search_path使用public。

我正在嘗試修改一個現有的事件觸發器,其定義如下:

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)

如果我嘗試重新創建而不刪除它,它會錯誤地指出它已經存在:

=> CREATE EVENT TRIGGER deltest_update_last_modified ON ddl_command_end
->     WHEN tag IN ('CREATE TABLE')
->     EXECUTE PROCEDURE mll_audit();
ERROR:  event trigger "deltest_update_last_modified" already exists

我覺得我必須缺少一些基本知識。 我只想在公共架構中創建它。

\\df列出函數,而不是事件觸發器。 \\dy用於列出事件觸發器。 您碰巧有一個名為update_last_modified的函數(也許是無意間發生的)。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM