根据下面的示例,似乎不可能?
假设您的 PostgreSQL 数据库 (D) 中有两个表:表 A 和表 B。策略是任何人都可以读取或插入表 A 和表 B。PostgreSQL 数据库 (D) 存在于 PostgreSQL 数据库服务器( S)
您有一个 1.00 版的 Python 服务器(蓝色),它通过 PostgreSQL 服务器(S)连接到该 PostgreSQL 数据库(D)。
您部署了 Python 服务器(绿色)的新版本 (1.10)。它通过相同的 PostgreSQL 服务器 (S) 连接到相同的 PostgreSQL 数据库 (D)。在部署新版本 Python 服务器的过程中,您通过迁移更改策略。现在,任何人都只能读取或插入表 A。
因此,在此部署结束时,您将运行两个版本的 Python 服务器(蓝色和绿色),每个版本都通过相同的 PostgreSQL 服务器 (S) 连接到相同的 PostgreSQL 数据库 (D)。如上所述,PostgreSQL 数据库 (D) 现在有一个只允许在表 A 上读取或插入的策略。现在取消了在表 B 中读取或插入的能力。
一位用户尝试通过(蓝色)Python 服务器插入表 B。它会得到一个权限错误,因为它试图插入到表 B 但数据库策略不允许这样做。这是一个突破性的变化。
如果授权是由服务器提供的,而不是由数据库提供的,那么这个问题似乎就会消失。
- 蓝色将允许插入表 B
- 绿色不允许插入表 B
因此,不会发生重大变化。