jav*_*r35 4 sql postgresql flyway
迁移时我需要禁用表的触发器和约束/外键关系。我正在使用 Flyway 进行迁移。
因此,我想创建一个除超级用户之外的不同用户,并让新用户能够禁用/启用给定模式的所有触发器/约束。
所以我尝试了这个:
CREATE USER "MY_USER" WITH PASSWORD 'password';
GRANT ALL PRIVILEGES ON DATABASE postgres to "MY_USER";
create schema "MY_SCHEMA";
GRANT ALL PRIVILEGES ON ALL TABLES IN SCHEMA "MY_SCHEMA" TO "MY_USER";
GRANT ALL PRIVILEGES ON ALL SEQUENCES IN SCHEMA "MY_SCHEMA" TO "MY_USER";
GRANT ALL PRIVILEGES ON SCHEMA "MY_SCHEMA" TO "MY_USER";
Run Code Online (Sandbox Code Playgroud)
但是当我使用 MY_USER 并尝试运行此脚本时:
ALTER TABLE "MY_SCHEMA".TBLTABLE
DISABLE TRIGGER ALL;
Run Code Online (Sandbox Code Playgroud)
我收到错误:权限被拒绝:“RI_ConstraintTrigger_c_16434”是系统触发器。
当我使用超级用户尝试此脚本时,我可以运行它,但无法使用我创建的用户运行它。有什么建议么?
您需要成为超级用户才能禁用表上的 \xe2\x80\x9c 系统触发器\xe2\x80\x9d。
\n原因是这些触发器实现外键关系,禁用此类触发器会使数据库面临不一致的情况。人们不相信凡人能够做出这样的行为。
\n您可以做的是按名称禁用每个正常触发器。
\n如果您的目标是禁用外键约束,那么您就不走运了:非超级用户可以做到这一点的唯一方法是删除约束。
\n| 归档时间: |
|
| 查看次数: |
9209 次 |
| 最近记录: |