如何在Postgresql中更改事件触发器的所有者?

时间:2018-09-06 16:12:41

标签: postgresql postgresql-9.6

documentation指出,用于更改事件触发器的所有者的命令为:

ALTER EVENT TRIGGER name OWNER TO { new_owner | CURRENT_USER | SESSION_USER }

但是出现以下错误:

[42704] ERROR: event trigger "insert_component_relationship" does not exist

我认为这意味着我需要使用架构名称对其进行限定,所以我尝试了:

ALTER EVENT TRIGGER schema.name OWNER TO { new_owner }

但这也使我大叫:

[42601] ERROR: syntax error at or near "."

然后我刚开始尝试其他我认为可行的命令组合,例如:

ALTER TRIGGER name ON table OWNER TO { new_owner }

ALTER TRIGGER name ON schema.table OWNER TO { new_owner }

无济于事。在pagename参数下,似乎表明在创建模式时就可以推断出该模式,但是在尝试更改触发器时却没有提及模式限定。

EDIT使用伪值运行实际命令:

ALTER EVENT TRIGGER modify_relationship OWNER TO new_admin_user;

ALTER EVENT TRIGGER products.modify_relationship OWNER TO new_admin_user;

1 个答案:

答案 0 :(得分:0)

相对较小的错误。

确保触发器是实际事件触发器。

使用元命令\dy检查。如果未在此处显示,则可能不是事件触发器。

The CREATE TRIGGER statement in PostgreSQL implements a subset of the SQL standard. The following functionalities are currently missing:

触发器由SQL标准定义,documentation上没有提及所有权

ALTER EVENT TRIGGER的文档中,可以选择更改事件触发器的所有权

There is no CREATE EVENT TRIGGER statement in the SQL standard.

感谢@eurotrash的评论使我与众不同。