我正在将现有测试环境迁移到 Amazon RDS PostgreSQL。测试框架具有将某些表中的数据重新加载到早期状态的功能。为此,它禁用外键、删除现有数据、加载保存状态并再次启用外键。
目前,测试框架通过禁用所有触发器来禁用外键(当然,这需要超级用户):
alter table tablename disable trigger all;
Run Code Online (Sandbox Code Playgroud)
在 RDS 上,这失败了:
错误:权限被拒绝:“RI_ConstraintTrigger_a_20164”是系统触发器
如何在 Amazon RDS PostgreSQL 中临时禁用外键?
注意:已经提出了类似的问题(RDS 上的 PostgreSQL:如何使用 FK 约束批量导入数据?)但它专门针对离线导入,并且该解决方案也特定于离线导入。
我正在将现有应用程序迁移到 Amazon RDS PostgreSQL。该应用程序具有跨数据库支持,出于兼容性原因,它包含以下 SQL:
CREATE CAST (varchar AS numeric) WITH INOUT AS ASSIGNMENT
Run Code Online (Sandbox Code Playgroud)
在普通 PostgreSQL 上,这需要超级用户。在 Amazon RDS PostgreSQL 上这失败了
错误:必须是类型字符变化或数字类型的所有者
注意:我猜这是否是赋值或隐式转换无关紧要,但为了完整性而包含此信息。