【发布时间】:2018-07-10 17:47:52
【问题描述】:
是否可以更改我未连接到的数据库的架构?更具体地说,我需要更改架构的所有者(但对于问题而言这并不重要)。
正如documentation 所说,可以使用以下子句更改模式:
ALTER SCHEMA name OWNER TO { new_owner | CURRENT_USER | SESSION_USER }
它确实有效,但仅适用于我当前连接的数据库。
当然,我可以重新连接到另一个数据库并手动完成,但我很感兴趣是否可以通过连接到另一个(通常是postgres)数据库来完成。这对自动化流程非常有帮助。
我尝试过类似的方法:
ALTER DATABASE ALTER SCHEMA name OWNER TO ...
ALTER SCHEMA "db_name".name OWNER TO ...
但没有成功 - 所以我很感兴趣是否有可能。
我尝试使用一个流行的搜索引擎和 StackOverflow 搜索功能搜索此信息。不成功 - 因此问题。
【问题讨论】:
-
看起来这个帖子可能有一个解决方法:stackoverflow.com/questions/10335561/…
-
@JacobH:谢谢你指点我。我现在实际上已经使用了
psql $PG_DATABASE -c "ALTER SCHEMA \"public\" OWNER TO $PG_USER";的解决方法。我对它是否可能更感兴趣,所以我将来可以使用它:) -
在 SQL Server 中,您可以使用
USE [Database],但由于 Postgres 没有等效项,我认为解决方法可能是唯一的选择。也许另一个用户有不同的方法。 -
不,这是不可能的。您只能访问您连接到的数据库中的对象。如果你想在不同的数据库中做某事,你需要连接到那个数据库。
-
感谢@a_horse_with_no_name 的回复。你所说的实际上会给出自己的答案。
标签: sql postgresql