我正在将现有测试环境迁移到Amazon RDS PostgreSQL。测试框架具有将某些表中的数据重新加载到较早状态的功能。为此,它将禁用外键,删除现有数据,加载保存状态并再次启用外键。
当前,测试框架通过禁用所有触发器来禁用外键(当然,这需要超级用户):
alter table tablename disable trigger all;
在RDS上,此操作失败并显示:
错误:权限被拒绝:“ RI_ConstraintTrigger_a_20164”是系统触发器
如何在Amazon RDS PostgreSQL中临时禁用外键?
注意:已经问过类似的问题(RDS上的PostgreSQL:如何在FK约束下批量导入数据?),但这是专门针对脱机导入的,解决方案也针对脱机导入。
也许这应该是一个stackoverflow问题?
—
Piotr Findeisen
不同意-这与数据库管理非常相关。
—
Vérace
您现在如何禁用FK?您为什么期望它在RDS上有所不同?另外,为什么不尝试一下呢?
—
dezso 2015年
@dezso,感谢您的评论。当然,我添加了在非RDS PostgreSQL上使用的代码。
—
Piotr
哦,是的,这样就行不通了。但是,如何删除并重新创建FK约束呢?
—
dezso