【发布时间】:2014-11-18 20:28:02
【问题描述】:
我想使用 REASSIGN OWNED 查询将 1 个数据库中的所有对象从所有者 A 更改为所有者 B。
假设我有以下数据库:
postgres | postgres | UTF8 | en_US.UTF-8 | en_US.UTF-8 |
template0 | postgres | UTF8 | en_US.UTF-8 | en_US.UTF-8 | =c/postgres +
| | | | | postgres=CTc/postgres
template1 | postgres | UTF8 | en_US.UTF-8 | en_US.UTF-8 | =c/postgres +
| | | | | postgres=CTc/postgres
db1 | user1 | UTF8 | en_US.UTF-8 | en_US.UTF-8 |
db2 | user1 | UTF8 | en_US.UTF-8 | en_US.UTF-8 |
db3 | user2 | UTF8 | en_US.UTF-8 | en_US.UTF-8 |
我想要 db1 和里面的所有对象,以便它们归 user2 所有。我跑:
postgres=# \c db1
SSL connection (cipher: DHE-RSA-AES256-SHA, bits: 256)
You are now connected to database "db1" as user "postgres".
db1=# REASSIGN OWNED BY user1 TO user2;
REASSIGN OWNED
db1 及其所有对象的所有者发生了应有的变化。但是该命令也改变了 db2 的所有者。不是 db2 中的对象,只是数据库(like 和 ALTER DATABASE 语句):
postgres | postgres | UTF8 | en_US.UTF-8 | en_US.UTF-8 |
template0 | postgres | UTF8 | en_US.UTF-8 | en_US.UTF-8 | =c/postgres +
| | | | | postgres=CTc/postgres
template1 | postgres | UTF8 | en_US.UTF-8 | en_US.UTF-8 | =c/postgres +
| | | | | postgres=CTc/postgres
db1 | user2 | UTF8 | en_US.UTF-8 | en_US.UTF-8 |
db2 | user2 | UTF8 | en_US.UTF-8 | en_US.UTF-8 |
db3 | user2 | UTF8 | en_US.UTF-8 | en_US.UTF-8 |
这是正常行为吗?如何在不更改其他数据库的情况下运行REASSIGN OWNED?
【问题讨论】:
-
这看起来像一个错误。至少documentation 完全没有暗示它。你觉得submitting 是这样的吗?
-
@DanielVérité 感谢您的意见。我刚刚将其报告为错误(#12008)。我会回复 Posgres 人的任何反馈。
标签: database postgresql alter