我的RDS Postgres数据库需要一个事件触发器。最终,我需要在架构发生变化时得到通知。在普通的Postgres(即非RDS实例)中,这很好用。但是,在RDS中运行以下内容:
CREATE EVENT TRIGGER audit ON ddl_command_start EXECUTE PROCEDURE stat_audit();
结果:
ERROR: permission denied to create event trigger
HINT: Must be superuser to create an event trigger.
据我所知,RDS上最具特权的角色是rds_superuser。我已将rds_superuser授予我的帐户(例如grant rds_superuser to someuser;
)。但我仍然无法创建事件触发器。我确实理解rds_superuser与pg超级用户的角色不同(可以通过运行:SHOW is_superuser
或SELECT * FROM pg_user
来确认)。
我也理解为什么RDS可能会锁定真正的超级用户权限,但如果我无法访问事件触发器,这似乎是一个非常重要的限制。我错过了什么吗?是否可以在RDS上的Postgres中设置事件触发器?如果没有,是否有任何替代模仿相同的功能?我知道RDS事件通知,但似乎没有任何选项来订阅架构更改事件。
答案 0 :(得分:1)
我知道这是一个老问题,但现在似乎得到了支持。
PostgreSQL版本9.4.9及更高版本以及9.5.4及更高版本 支持事件触发器,Amazon RDS支持事件触发器 这些版本。主用户帐户可用于创建,修改, 重命名,并删除事件触发器。事件触发器位于DB 实例级别,因此它们可以应用于实例上的所有数据库。对于 有关Amazon RDS上的PostgreSQL事件触发器的更多信息,请参阅 Amazon RDS上PostgreSQL的事件触发器。