7

我的 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 事件通知,但似乎没有任何选项可以订阅架构更改事件。

4

1 回答 1

3

我知道这是一个老问题,但现在似乎得到了支持。

PostgreSQL 9.4.9 及更高版本和 9.5.4 及更高版本支持事件触发器,Amazon RDS 支持这些版本的事件触发器。主用户帐户可用于创建、修改、重命名和删除事件触发器。事件触发器位于数据库实例级别,因此它们可以应用于实例上的所有数据库。有关 Amazon RDS 上的 PostgreSQL 事件触发器的更多信息,请参阅 Amazon RDS 上的 PostgreSQL 事件触发器。

http://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/CHAP_PostgreSQL.html#PostgreSQL.Concepts.General.FeatureSupport.EventTriggers

于 2017-06-16T08:13:05.480 回答